ach*_*ral 3 iphone header objective-c
这是一个初学者,为iPhone开发,有一个非常简单的问题:在头文件中声明一个方法,然后在实现文件中填写它的原因是什么?这总是必须要做吗?
另外,我知道在头文件的@interface中声明变量,但为什么它们有时只用@property标签重复?这是否适用于其他类可能希望读取或写入的变量(因此它们会自动创建getter和setter方法)?
亲切的问候.
rus*_*afi 10
在.h文件中声明方法称为前向声明.如果在.h文件中声明方法头,则编译器将在实际链接之前知道方法名称,参数和返回类型.您只能在.m文件中编写方法体.但该方法只能由该文件中声明的方法使用.但是如果你在标题中声明一个方法那么它就不是问题了.因为在编译器的第一次传递期间方法签名将被所有人知道,并且将在第二次传递中链接.
@property和@synthesize标记用于创建自动getter和setter(或Accessors和Mutators,在Objective-C术语),但还有更多.在iOS你必须手动进行内存管理(应该iOS5像苹果承诺的那样进行更改).在@property标签中,您可以了解内存在分配期间的行为方式.
iOS通过保持保留计数来跟踪对象的内存管理.当您分配一个对象时,它的保留计数变为1.然后您可以通过retain方法手动增加保留计数(例如[myObj retain])或通过释放方法减少保留计数(例如[myObj release]).当保留计数降至0时iOS,从内存中删除该对象.使用@property标记,您可以定义在分配期间如何管理保留计数.例如,@property标签中两个最常用的参数是:
@property (nonatomic, retain)
@property (nonatomic, assign)
Run Code Online (Sandbox Code Playgroud)
在分配期间的第一种情况下,对象的保留计数将自动增加1(例如self.myObj = anotherClass.anotherObjOfSameClass;),而在后一种情况下,保留计数不会增加.
| 归档时间: |
|
| 查看次数: |
5766 次 |
| 最近记录: |