当您从Xcode创建一个嵌入CoreData的新应用程序时,您可以在委托的实现文件中获得这些行:
@synthesize window=_window;
@synthesize managedObjectContext=__managedObjectContext;
Run Code Online (Sandbox Code Playgroud)
仅使用下划线或双倍之间有什么区别?只写作有什么区别:
@synthesize window;
Run Code Online (Sandbox Code Playgroud) Objective-C中的单个下划线显然是为Apple的"内部"使用保留的(并且在Apple声明之前可用于私有实例变量).但是为什么他们会在他们的SQLiteBooks示例中为iPhone 使用双 -underscore呢?请参阅从MasterViewController.m获取的此片段:
+ (EditingViewController *)editingViewController {
// Instantiate the editing view controller if necessary.
if (__editingViewController == nil) {
__editingViewController = [[EditingViewController alloc] initWithNibName:@"EditingView" bundle:nil];
}
return __editingViewController;
}
Run Code Online (Sandbox Code Playgroud)
在这个论坛上提到了双重下划线,因为它与C有关 - 它是"compier的内部使用".我想我不知道这在这种情况下是如何适用的.
我在我的应用程序中需要一个ViewController,它的行为与SQLiteBooks示例项目中的一样,但是这个双下划线让我感到困惑.
在最近的Xcode 4.3项目模板中,一些@synthesze被声明为:
@synthesize window = _window;
@synthesize managedObjectContext = __managedObjectContext;
@synthesize managedObjectModel = __managedObjectModel;
@synthesize persistentStoreCoordinator = __persistentStoreCoordinator;
@synthesize navigationController = _navigationController;
Run Code Online (Sandbox Code Playgroud)
有些带有双下划线(__)作为前缀.为什么?
与readonly属性有关吗?
@property (strong, nonatomic) UIWindow *window;
@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;
@property (strong, nonatomic) UINavigationController *navigationController;
Run Code Online (Sandbox Code Playgroud) 有没有人知道为什么XCode模板(至少在XCode 4.3.2中)有一些带有两个下划线的ivars和一些只有一个的前缀?
例如,Master-Detail应用程序模板包含文件MasterViewController.m,其中可以找到:
@synthesize detailViewController = _detailViewController;
@synthesize fetchedResultsController = __fetchedResultsController;
@synthesize managedObjectContext = __managedObjectContext;
Run Code Online (Sandbox Code Playgroud)
谢谢.
我注意到在许多社区Objective-C类和Apple的框架中,他们使用带有下划线的变量前缀的约定来命名一些变量,例如:_name.拥有下划线的原因是什么?我应该在自己的课堂上这样做吗?如果是的话我应该何时何地使用它?
我已经读过_(下划线)仅用于表示变量/ method/class仅供API使用,不应由其他程序员使用.
怎么样__(双下划线)?
在这个例子中 __block BOOL found = NO;
来自关于Block Objects的Apple Docs .
另外,任何人都可以帮助我理解指向指针的概念吗?
**var
我已经阅读了一些关于它的答案,但并没有真正得到它.何时以及如何使用它?
objective-c ×6
cocoa ×3
cocoa-touch ×2
ios ×2
xcode ×2
conventions ×1
naming ×1
syntax ×1
xcode4.3 ×1