spa*_*r79 3 iphone objective-c storyboard ios
对不起,如果这是愚蠢的...但它让我困惑?...
我正在尝试使用Xcode的新故事板应用程序,并问自己为什么在我的实现文件中有@interface的第二个声明?
.H
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController {
}
@end
Run Code Online (Sandbox Code Playgroud)
.M
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
....
@end
Run Code Online (Sandbox Code Playgroud)
Jan*_*Yri 10
请参阅Apple的文档:https://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocCategories.html
它是一个类扩展,与类别略有不同,因为它在括号内没有名称.您可以使用它来声明要保密的属性和方法(在标题之外),并将公开的只读属性和方法重新声明为私有读写.这允许更清洁的封装.
根据要求,一个友好的例子:
JYDuckPondManager.h
@interface JYDuckPondManager : NSObject
@property (nonatomic, assign, readonly) NSUInteger duckCount;
@property (nonatomic, assign, readonly) CGFloat waterLevel;
- (JYDuckReaction *)feedDucks:(JYDuckFood *)food;
- (JYDuckReaction *)harassDucks:(JYDuckTaunt *)taunt;
@end
Run Code Online (Sandbox Code Playgroud)
JYDuckPondManager.m(扩展,虚构实现省略)
@interface JYDuckPondManager ()
//// Redefined for internal modification
@property (nonatomic, assign, readwrite) NSUInteger duckCount;
@property (nonatomic, assign, readwrite) CGFloat waterLevel;
//// Internally exclusive properties
@property (nonatomic, strong) NSSet *duckPersonalitySet;
@property (nonatomic, assign) CGFloat flockAnxietyLevel;
//// Private messages
- (void)recalculatePondState;
@end
Run Code Online (Sandbox Code Playgroud)
其他物体应该能够与池塘相互作用,但它们不应该知道池塘中发生的某些事情或重新定义池塘的统计数据.在.m扩展名中保留螺母和螺栓可确保.h简洁且适当受限.
| 归档时间: |
|
| 查看次数: |
532 次 |
| 最近记录: |