首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >目标C-2简单问题

目标C-2简单问题
EN

Stack Overflow用户
提问于 2010-11-13 23:35:41
回答 4查看 147关注 0票数 0
  1. 使用@class#import有什么区别?我遇到了一个情况,我得到了一个构建错误,解决方案是使用@class而不是#import来导入我的类。
  2. 意味着什么?何时使用非原子性定义属性,何时避免?
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-11-13 23:48:37

@class允许您为以后定义的类创建存根。例如:

MyOtherClass.h

代码语言:javascript
复制
@class MyClass;

@interface MyOtherClass : NSObject {
    MyClass *myObject;
}

MyOtherClass.m

代码语言:javascript
复制
#include "MyOtherClass.h"

@interface MyClass : NSObject {
    NSUInteger myInt;
}

#define用于定义将被预处理器替换的字符串。例如:

代码语言:javascript
复制
#define MY_INT 5

x = MY_INT;

预处理器将重写为:

代码语言:javascript
复制
x = 5;
票数 2
EN

Stack Overflow用户

发布于 2010-11-14 00:03:19

Scott已经从字面上回答了您的问题,但是如果像Adam Ko所说的那样,您的意思是# import,那么答案将是@class不导入类,而只是告诉编译器,稍后将提供一个具有给定名称的类(我记得这个类称为“延迟绑定”)。

@类主要用于两个相互引用的类,因此它们不能同时导入(这可能是编译器错误的来源)。

但是,@class有一个明显的限制,编译器不允许您引用定义类的任何方法或属性。但是通常您只需要在实现.m文件中使用它们,并且可以在那里导入类,而不会出现任何问题。

票数 0
EN

Stack Overflow用户

发布于 2010-11-14 00:17:50

原子属性是确保getter返回有效、有意义的值的属性,即使相关的setter在另一个线程上同时被调用。这在处理术语上比非原子属性花费更多,但对于多线程代码来说更安全。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4175313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档