Tag: cocoa

@class与#import

据我的理解,在ClassA需要包含ClassB头的情况下,应该使用forward-class声明,而ClassB需要包含ClassA头以避免任何循环包含。 我也明白一个#import是一个简单的ifndef因此一个包含只发生一次。 我的查询是这样的:什么时候使用#import ,什么时候使用@class ? 有时如果我使用@class声明, @class看到如下所示的常见编译器警告: warning: receiver 'FooController' is a forward class and corresponding @interface may not exist. 真的很想理解这一点,而不是仅仅删除@class前向声明,并抛出#import来沉默编译器给我的警告。

Objective-C中的常量

我正在开发一个Cocoa应用程序,而且我正在使用常量NSString s来存储我的首选项的键名。 我知道这是一个好主意,因为如果需要的话,它可以很容易地更改密钥。 另外,它是整个“从你的逻辑分离你的数据”的概念。 无论如何,是否有一个很好的方法来使整个应用程序定义一次这些常量? 我相信这是一种简单而明智的方式,但现在我的课程正在重新定义他们使用的课程。

如何在cocoaObjective-C类中的variables前面加下划线?

我在几个iPhone例子中已经看到,属性在variables前面使用了下划线_。 有谁知道这是什么意思? 或者它是如何工作的? 我正在使用的接口文件如下所示: @interface MissionCell : UITableViewCell { Mission *_mission; UILabel *_missionName; } @property (nonatomic, retain) UILabel *missionName; – (Mission *)mission; 我不确定到底是什么,但是当我尝试设置任务名称如: aMission.missionName = missionName; 我得到的错误: 请求成员'missionName'的东西不是一个结构或联盟

什么是最好的方式来洗牌NSMutableArray?

如果你有一个NSMutableArray ,你如何随机地洗牌元素? (我有我自己的答案,这是张贴在下面,但我是新cocoa,我很想知道如果有一个更好的办法。) 更新:正如@Mukesh所指出的,从iOS 10+和m​​acOS 10.12+开始,有一个可以用来洗牌的-[NSMutableArray shuffledArray]方法。 有关详细信息,请参阅https://developer.apple.com/documentation/foundation/nsarray/1640855-shuffledarray?language=objc 。 (但是请注意,这会创build一个新的数组,而不是将这些元素移动到位。)

从closures几个小时

我在用 NSDate *date = [NSDate date]; 为了得到date,但我得到的date是2个小时。

如何将文件types与iPhone应用程序关联?

在关联您的iPhone应用程序与文件types的主题。 在这个信息丰富的问题​​中,我了解到,应用程序可以与自定义URL协议相关联。 这大概是一年前,从那以后,苹果推出了“文档支持”,它进一步推动了应用程序与文件types的关联。 有关如何设置您的应用程序以在遇到未知文件types时启动其他适当的应用程序的文档中有很多讨论。 这意味着该协会不适用于任何应用程序,就像URL协议注册一样。 这使我想到了这样一个问题:像Safari或Mail这样的系统应用程序是否实现了这个系统来select关联的应用程序,还是像以前一样不做任何事情?

如何从UIImage(Cocoa Touch)或CGImage(Core Graphics)获取像素数据?

我有一个UIImage(cocoa触摸)。 从那里,我很高兴得到一个CGImage或任何你想要的东西。 我想写这个函数: – (int)getRGBAFromImage:(UIImage *)image atX:(int)xx andY:(int)yy { // […] // What do I want to read about to help // me fill in this bit, here? // […] int result = (red << 24) | (green << 16) | (blue << 8) | alpha; return result; } 谢谢!

我可以在iPhone应用程序中embedded自定义字体吗?

这个问题涉及iOS 3.2之前的版本。 从3.2开始,使用samvermette的答案很容易实现这个function,并且我已经将接受的答案(从commanda改为samvermette)来反映这一点。 我不能赞扬这两个答案(除了upvotes),但他们都很好。 我想有一个应用程序包含一个自定义字体来渲染文本,加载它,然后使用标准UIKit元素,如UILabel 。 这可能吗? 我发现这些链接: http://discussions.apple.com/thread.jspa?messageID=8304744 http://forums.macrumors.com/showthread.php?t=569311 但是这些都要求我自己渲染每个字形,这有点像辛勤工作,特别是对于多行文本。 我也发现了一些文章,说明这是不可能的,但没有理由,所以我正在寻找一个明确的答案。 编辑 – 失败-[UIFont fontWithName:size:]实验 我下载了Harrowprint.tff(从这里下载),并将其添加到我的资源目录和项目。 然后我试了这个代码: UIFont* font = [UIFont fontWithName:@"Harrowprint" size:20]; 导致抛出exception。 查看Finder中的TTF文件,确认字体名称是Harrowprint。 编辑 – 到目前为止,已经有了很多回复,这些回复告诉我要阅读X或Y的文档。我已经对这些内容进行了广泛的尝试,并没有得到任何答案。 在一个案例中,X原来只与OS X相关,而不是iPhone。 因此,我为这个问题设置了一个奖励,我将赏金给第一个提供答案的人(只使用logging的API),他们用足够的信息来回答这个问题。 在模拟器上工作也将是一个奖金。 编辑 – 看来,赏金自动奖给答案与最高票数。 有趣。 没有人真正提供了一个解决问题的答案 – 问题涉及编写自己的UILabel子类的解决scheme不支持自动换行,这对我来说是一个重要的function – 尽pipe我想我可以扩展它来这样做。

如何在Objective-C中创build委托?

我知道代表是如何工作的,而且我知道如何使用它们。 但是,我如何创build它们?

如何sorting一个NSMutableArray中的自定义对象?

我想要做的事似乎很简单,但我无法在网上find任何答案。 我有一个NSMutableArray的对象,让我们说,他们是'人'的对象。 我想sortingNSMutableArray由Person.birthDate是一个NSDate 。 我认为这与这种方法有关: NSArray *sortedArray = [drinkDetails sortedArrayUsingSelector:@selector(???)]; 在Java中,我会使我的对象实现Comparable,或使用Collections.sort与内联自定义比较器…你怎么在Objective-C中做到这一点?