A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© gongxia20 中级黑马   /  2014-10-10 19:29  /  1546 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 gongxia20 于 2014-10-10 19:30 编辑

点语法:
1、利用点语法替换set方法和get方法
方法调用
Student *stu = [Student new];
[stu setAge:100];
int age = [stu age];
点语法
stu.age = 100;
int age = stu.age;

2、点语法的本质
其实点语法的本质还是方法调用
当使用点语法时,编译器会自动展开成相应的方法

3、死循环注意
- (void) setAge:(int)age {
    // 下面的代码会引发死循环
    self.age = age;       // [self setAge:age];
}
- (int) age {
    // 下面的代码会引发死循环
    return self.age;    // [self  age];
}

成员变量的作用域
1、基本概念
局部变量、全局变量都有自己的作用域,成员变量也不例外
2、类型
@public:任何地方都能直接访问对象的成员变量
@private:只能在当前类的对象方法中直接访(@implementation中默认是@private)
@protected:可以在当前类以及子类的对象方法中直接访问(@interface中默认就是@protected)
@package:只要处在一个框架中,就能直接访问对象的成员变量介于@private和@public之间

interface和@implementation中不能声明同名的成员变量
3、@implementation补充
没有@interface,只有@implementation,也可以开发一个类


@property和@synthesize
@property
用在@inteface中
用来自动生成setter和getter的声明
用@property int age;就可以代替下面的两行
- (int)age;   // getter
- (void)setAge:(int)age;  //setter

@synthesize
用在@implementation中
用来自动生成setter和getter的实现
用@synthesize age = _age;就可以代替
- (int)age{
return _age;
}
- (void)setAge:(int)age{
_age = age;


@property加强
自从Xcode 4.x后,@property就独揽了@synthesize的功能。也就是说,@property可以同时生成setter和getter的声明和实现
默认情况下,setter和getter方法中的实现,会去访问下划线 _ 开头的成员变量

id万能指针
id是万能指针,能指向任何OC对象,相当于NSObject *
id类型的定义
typedef struct objc_object {
    Class isa;
} *id;

使用
// 注意:id后面不要加上*
id p = [Person new];
id是一种数据类型
1.声明定义变量 2.作为参数  3.作为返回值
id b;
-(id)test:(id)b;
//  父类的指针指向子类的对象-多态
    NSObject *objc = [Person new];
//  要想让指向子类对象的父类指针调用子类的私有方法,就要进行强制转化
    Person*person1 = (Person *)objc;
   [person1 eat];

   id d = [Person new];
//  用id类型的指针调用其他类的方法的时候,不用进行强制转化
    [d eat];
//  id是一种数据类型,属于关键字,所以在定义变量时不能定义成id
    //int id;

其它注意:
判断跟其他**是否**的命名规范(返回YES,否则返回NO)
返回值是BOOL类型的,方法名一般都以is开头
—(BOOL)isInteractWithOther: (Circle *)other;

只有利用类名调用类方法的时候,不需要在类后面写*
其它情况下,类名后面统一加*

评分

参与人数 1技术分 +1 收起 理由
星河鹭起 + 1

查看全部评分

10 个回复

倒序浏览
大神,赞你100下
回复 使用道具 举报
好棒!楼主好厉害!
回复 使用道具 举报
好东西收藏了
回复 使用道具 举报
这个好像还不错
回复 使用道具 举报

没大神的100篇厉害
回复 使用道具 举报
那个构造方法、分类,description,SEL这些呢。。。
回复 使用道具 举报
魔法少年十三 发表于 2014-10-11 11:12
那个构造方法、分类,description,SEL这些呢。。。

没发,只发了一份
回复 使用道具 举报
魔法少年十三 来自手机 中级黑马 2014-10-12 04:47:42
9#
gongxia20 发表于 2014-10-12 00:10
没发,只发了一份

求分享哈,我也想看看自己是不是有些知识点疏漏了
回复 使用道具 举报
Lizzie 中级黑马 2014-10-13 00:24:01
10#
正好也到这块,学习了!
回复 使用道具 举报
刚把C语言视频看完。。。。:lol
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马