黑马程序员 初学OC的一些注意总结2
2014-06-30 07:22
344 查看
---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、
<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----- -----------------
初学OC的一些注意总结2
1、 注意编译和运行过程中不同: 父类 名称 = [子类new] 在这个过程中编译器会给出警告,但不是错误。
运行的结果是使父类指针指向子类对象。这是由于oc是弱语法,这种最好是不出现父类指针调用子类特
有的方法(注意理解这句话)会出现警告。如果要调用这个方法的话就要强制转换
2、 强制转换是做给编译器看的
3、 OC是弱语法:Dog*d = [Cat new];[ d eat];在编译器中能通过,并且能运行eat方法。
4、 如果一个方法没有定义,oc编译不会报错,而且还能生成可执行文件。但是 .out文件运行会报错:
unrecognized selector sent to instance 即给实例发送了一个不能识别的消息。
5、 Oc在运行的时候才会检测对象有没有实现相应的方法(动态检测),可以没有声明,方法也能运行,
一般在main的前面。一般会出现闪退。
6、 要善于思考,思考代码的合理性。
7、 返回值是布尔类型的BOOL命名通常是isXXX开通
8、 在分.m 和.h文件是,注意不要#import “xxx.m ” 文件 这样会出现重复定义的错误,xcode链接是
把所有的.o文件一起链接运行的
9、 点语法的本质是方法调用xxx . xxx=10相当于[xxxxxx:10],成员变量的访问xxx->xxx。点语法表示的
不是setter方法就是getter方法
10、 变量的作用域:@public:在任何地方都能访问对象的成员变量 @private 只能在当前的类的
对象方法中直接使用。@protected 当前类和子类 @package 在同一个框架下使用,它介于public和private
之间。如果在.m文件中定义的成员变量名时的变量就是私有的,并且不能与声明中的成员变量同名
11、 @property是编译器语法,即编译器遇到它是就是自动展开setter和getter方法的声明,
@synthesize自动实现setter和getter方法。如果没有声明相应的成员变量,他会自动生成成员变量。并且还
是@private的作用域
12、 在setter和getter方法中又一个方法没有实现,用@property系统帮你生成另一个,并和成员变
量(如果没有的话),@property 参数类型分为四类:1、内存管理 ,retain(set方法里面的内存管理,OC对
象类型) 和assign (set方法直接赋值 ,也就是默认的情况,非 OC对象类型),还有一个copy(retain差不
多) 2、是否生成set方法:readonly(只读),readwrite(可读可写,默认)3、多线程管理:nonatomic(性能高)
atomic(性能低 默认)4、setter和getter方法的命名
13、 万能指针,id,它包含*,即定义指针为 id p=[Person new];
14、 New方法的解构:1、alloc,分配内存 2、init,对象初始化Person *p = [Person new]相当
于Person *p = [Person alloc]; Person *p1 = [pinit];
15、 在重写init方法时,必须写[super init];保证初始化父类的一些成员变量,然后根据需要在自己重写的
方法中初始化一些数据,一般还需要判断self是否为空即:if(self != nil) (nil相当于0),一般
这样写:if(self = [super init]) …
16、 自定义的构造方法规范:1、对象方法 2、 返回值是(id) 3、都是已init开头最好是initWith开头
17、 代码中尽量低耦合才是完美的,即更改一个方法或者类的内容,不会影响或影响最低它类或方法
18、 @category在不给以前类内的基础上增加类的方法 格式: @interface 类名(类别名称) @end @implementation 类名(类别) @end
19、 注意类别中要使用原类中的成员变量时,变量必须是明文定义的,不能是@property产生的。否者会报错。<
4000
/p>
20、 在使用类别是如果有名称相同的方法,类别的方法优先级更高,即在类别中会覆盖原来类中的方法。在两个
类别中都有同名方法,最后一个编译的被使用
21、 类的本身也是一个对象,它的类型是Class类型,称之为“类对象”,注意与实例对象的区别。Class定义的
时候不需要加(*)它包含了星,
22、 获取内存中的类对象的方法1、[实例对象class] 2、[类名class]
我们用%p输出指针的地址。
---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、
<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----- -----------------
<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----- -----------------
初学OC的一些注意总结2
1、 注意编译和运行过程中不同: 父类 名称 = [子类new] 在这个过程中编译器会给出警告,但不是错误。
运行的结果是使父类指针指向子类对象。这是由于oc是弱语法,这种最好是不出现父类指针调用子类特
有的方法(注意理解这句话)会出现警告。如果要调用这个方法的话就要强制转换
2、 强制转换是做给编译器看的
3、 OC是弱语法:Dog*d = [Cat new];[ d eat];在编译器中能通过,并且能运行eat方法。
4、 如果一个方法没有定义,oc编译不会报错,而且还能生成可执行文件。但是 .out文件运行会报错:
unrecognized selector sent to instance 即给实例发送了一个不能识别的消息。
5、 Oc在运行的时候才会检测对象有没有实现相应的方法(动态检测),可以没有声明,方法也能运行,
一般在main的前面。一般会出现闪退。
6、 要善于思考,思考代码的合理性。
7、 返回值是布尔类型的BOOL命名通常是isXXX开通
8、 在分.m 和.h文件是,注意不要#import “xxx.m ” 文件 这样会出现重复定义的错误,xcode链接是
把所有的.o文件一起链接运行的
9、 点语法的本质是方法调用xxx . xxx=10相当于[xxxxxx:10],成员变量的访问xxx->xxx。点语法表示的
不是setter方法就是getter方法
10、 变量的作用域:@public:在任何地方都能访问对象的成员变量 @private 只能在当前的类的
对象方法中直接使用。@protected 当前类和子类 @package 在同一个框架下使用,它介于public和private
之间。如果在.m文件中定义的成员变量名时的变量就是私有的,并且不能与声明中的成员变量同名
11、 @property是编译器语法,即编译器遇到它是就是自动展开setter和getter方法的声明,
@synthesize自动实现setter和getter方法。如果没有声明相应的成员变量,他会自动生成成员变量。并且还
是@private的作用域
12、 在setter和getter方法中又一个方法没有实现,用@property系统帮你生成另一个,并和成员变
量(如果没有的话),@property 参数类型分为四类:1、内存管理 ,retain(set方法里面的内存管理,OC对
象类型) 和assign (set方法直接赋值 ,也就是默认的情况,非 OC对象类型),还有一个copy(retain差不
多) 2、是否生成set方法:readonly(只读),readwrite(可读可写,默认)3、多线程管理:nonatomic(性能高)
atomic(性能低 默认)4、setter和getter方法的命名
13、 万能指针,id,它包含*,即定义指针为 id p=[Person new];
14、 New方法的解构:1、alloc,分配内存 2、init,对象初始化Person *p = [Person new]相当
于Person *p = [Person alloc]; Person *p1 = [pinit];
15、 在重写init方法时,必须写[super init];保证初始化父类的一些成员变量,然后根据需要在自己重写的
方法中初始化一些数据,一般还需要判断self是否为空即:if(self != nil) (nil相当于0),一般
这样写:if(self = [super init]) …
16、 自定义的构造方法规范:1、对象方法 2、 返回值是(id) 3、都是已init开头最好是initWith开头
17、 代码中尽量低耦合才是完美的,即更改一个方法或者类的内容,不会影响或影响最低它类或方法
18、 @category在不给以前类内的基础上增加类的方法 格式: @interface 类名(类别名称) @end @implementation 类名(类别) @end
19、 注意类别中要使用原类中的成员变量时,变量必须是明文定义的,不能是@property产生的。否者会报错。<
4000
/p>
20、 在使用类别是如果有名称相同的方法,类别的方法优先级更高,即在类别中会覆盖原来类中的方法。在两个
类别中都有同名方法,最后一个编译的被使用
21、 类的本身也是一个对象,它的类型是Class类型,称之为“类对象”,注意与实例对象的区别。Class定义的
时候不需要加(*)它包含了星,
22、 获取内存中的类对象的方法1、[实例对象class] 2、[类名class]
我们用%p输出指针的地址。
---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、
<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----- -----------------
相关文章推荐
- 黑马程序员 初学OC的一些注意总结3
- 黑马程序员 初学OC的一些注意总结 1
- 黑马程序员-OC语言-self修饰变量以及使用总结和注意事项(听课笔记)
- java编程的一些注意事项,网络资源总结
- 初学RDF的一些总结
- 初学Javascript的一些总结
- 初学Javascript的一些总结
- 自己总结的一些需要注意的地方,含点个人小技巧&&经验
- 关于CKEditor与CKFinder配合使用以及一些注意点总结
- Flex 编程注意之性能优化、垃圾回收的一些总结
- Flex]Flex编程注意之性能优化、垃圾回收的一些总结
- PHP开发的一些注意点总结
- 自己总结的一些数据库操作需要注意的东西
- PHP开发的一些注意点总结
- PHP开发的一些注意点总结
- Flex编程注意之性能优化、垃圾回收的一些总结
- 总结出来的一些ASP.NET程序性能优化的注意事项[不断补充]
- 总结出来的一些ASP.NET程序性能优化的注意事项[不断补充]
- 总结的一些css实用技巧及必须得注意的事项:
- SAP B1 DTW的一些总结和注意事项