ios开发第一弹--概述

    本人ios开发小白。熟悉c,c++,但是对于objective-c和所有第一次接触他的人一样,“这都tm是什么玩意儿啊!”。想要好好看这个玩意儿很久了,但是断断续续总是在开始阶段。想的太多,做的太少。这一次,从第一弹开始,come on!本系列算是斯坦福大学《ios7开发》视频的学习笔记。视频请看网易公开课。


objective-c总是以这种方式建立一个类

例如Card类

头文件

Card.h

@interface Card : NSObject

@end

源文件

Card.m

#import "Card.h"

@implementation Card

@end


头文件中属性与方法是开放的,对外的。源文件中总是私有的不对外的属性和方法的实现(也就是说m文件中也定义属性,但是该属性为似有成员,也定义私有方法和方法的实现)。

在头文件中定义属性的方法为,例如Card的内容

@property (strong, nonatomic) NSString* content;
@property (nonatomic) BOOL isChoosed;

@property相当于关键字,用于定义一个属性。strong和nonatomic则是用于描述属性的一些特性。strong表示为强类型,与之的对立是weak弱类型。强弱类型的区别是,强类型为如果app中有任意一个对象占有使用强类型,则系统不对其进行释放。弱类型为没有强类型的对象使用占有时,则系统对其进行释放(ios系统使用的时引用计数的方式进行对内存管理,后续再完善)。nonatomic则为非原子的,非原子的则是非线程安全的,即不允许多个线程对其进行修改。若为线程安全,则后续中会有很多代码锁定。一般来说,定义为非原子。第二个isChoosed的属性,因为时bool类型的,为基本类型,没有strong,weak之分(可以简单理解为,指针类型才有这个分别)。

objective-c的属性,有set和get方法。当在头文件中定义属性的时候,系统自动的已经生成了相应的默认set和get方法。偶尔有时候,定义自定义的set和get方法是有必要的,那么这个时候就需要在源文件中对其进行显示的定义。方法如下

@synthesize content = _content;

-(void)setContent:(NSString *)content
{
    _content = content;
}

-(NSString*)getContent
{
    return _content;
}

-(void) setIsChoose:(BOOL)isChoose
{
    _isChoose = isChoose;
}

第一行@synthesize是定义自定义set和get方法必须的。第一行的代码有些奇怪,他的意思时将content属性存储在_content中,当然_content只是为了更好的阅读,也可以定义为别的名称。它只是系统识别content的系统名称。

从get和set方法可以看出,objective-c方法的定义也不一样。-表示此方法属于对象,对应的时+,表示方法时独立于对象时属于类的。(void)表示返回类型,紧跟着的是方法名称。:后面跟的是参数类型及参数,如果没有参数则没有。关于get方法,也可以在头文件中对其重命名,比如

@property (nonatomic,getter=hasChoosed) BOOL isChoose;

剩下的就是方法的定义了。刚才说到set和get方法的时候提到了方法的定义。那么具体看一个例子

头文件中

-(int) Matched:(Card*) card;

源文件中

-(int)Matched:(Card *)card
{
    int result = 0;
    
    if([self.content isEqual:card])
    {
        result = 1;
    }
    
    return result;
}
另外可以注意到,对属性的调用和c,c++中并没有区别。但是objective-c中的独有调用方式也可以是[self content],和.调用是同样的。

补充一句,objective-c的调用方法[对象 方法]。对于objective-c的基本语法,网络上有很多很全了,这里就不概述了。

今天的学习就到这里,明天未完待续。


例子的完整代码:

Card.h

#import <Foundation/Foundation.h>

@interface Card : NSObject

@property (strong, nonatomic) NSString* content;
@property (nonatomic,getter=hasChoosed) BOOL isChoose;

-(int) Matched:(Card*) card;
-(int) CardsMatched:(NSArray*) cards;
@end

Card.m

#import "Card.h"

@implementation Card


@synthesize content = _content;
@synthesize isChoose = _isChoose;

-(void)setContent:(NSString *)content
{
    _content = content;
}

-(NSString*)getContent
{
    return _content;
}

-(void) setIsChoose:(BOOL)isChoose
{
    _isChoose = isChoose;
}

-(BOOL) hasChoosed
{
    return _isChoose;
}

-(int)Matched:(Card *)card
{
    int result = 0;
    
    if([self.content isEqual:card])
    {
        result = 1;
    }
    
    return result;
}

-(int) CardsMatched:(NSArray *)cards
{
    int results = 0;
    
    for(Card* card in cards)
    {
        if([card.content isEqual:card.content])
        {
            results = 1;
        }
    }
    
    return results;
}
@end








  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值