小编Qui*_*lor的帖子

您是应该使用委托还是在类本身中将委托设置为nil

如果A类正在使用B类而A类是B类的委托,那么如果在B类的dealloc中将委托设置为nil,那么它可以吗?我已经看到代码通常会将代理重置为类A的dealloc中的nil,但不确定这样或那样的真正区别.

这是通常的方式:

// somewhere in class A

- (void) someFunc {
  self.b = [[B alloc] init];
  self.b.delegate = self;
}

- (void) dealloc {
  self.b.delegate = nil;
  [self.b release];
}
Run Code Online (Sandbox Code Playgroud)

delegates memory-management objective-c

13
推荐指数
3
解决办法
9622
查看次数

来自observeValueForKeyPath:ofObject的参数:change:context:

我想知道这个方法的参数会返回什么.

- (void) observeValueForKeyPath:(NSString *)keyPath
                       ofObject:(id)object
                         change:(NSDictionary *)change
                        context:(void *)context;
Run Code Online (Sandbox Code Playgroud)

文档中

keyPath相对于对象的键路径,已更改的值.

object key path keyPath的源对象.

change一个字典,描述对关键路径keyPath的属性值所做的更改相对于object.

context注册接收器以接收键值观察通知时提供的值.

您能否为我解释这些参数,因为我发现文档有点难以理解.

parameters cocoa objective-c key-value-observing

13
推荐指数
1
解决办法
9739
查看次数

从共享实用程序窗口和最前面的文档窗口绑定的好方法是什么?

我有一个应用程序,允许打开多个NSDocuments.在此应用程序中是一个单一的实用程序窗口,其中包含我想要应用于最前面的文档的一些功能.

我试图在这里使用绑定,所以诀窍是如何干净地将实用程序窗口的用户界面绑定到最前面的文档.目标是然后切换最前面的文档窗口将更新实用程序窗口中的视图; 当文档模型中的状态发生变化时,绑定到最前面文档模型属性的控件将被适当更新.

要从这样的窗口发送动作,只需使用第一响应者即可; 文档对象可以通过响应者链拦截动作.但我想要更多,当然你不能绑定第一响应者.

我有一些想法:

  • 在我的nib中为对象窗口放置一个对象控制器.当文档窗口更改最前面的状态时,更改该绑定的内容.这样做的一个缺点是,如果我要使用另一种实用程序窗口,我必须记住将文档窗口中的绑定连接到该实用程序窗口!
  • 在应用程序委托中创建一个访问器,通过遍历窗口列表获取最前面的文档窗口.我的实用程序窗口将通过应用程序委托的方法绑定.这里的缺点是它不符合KVO
  • 在应用程序委托中有一个getter和setter来确定(并且可能设置为KVO兼容?这有意义吗?)最前面的文档.当窗口失去主要状态时,也许使用窗口通知将ivar设置为适当的值.更新:我现在正在使用它,它实际上看起来很干净.我设置为从价值windowDidBecomeMain我的文档窗口的通知,并清除它(如果它是当前值)windowWillClose.除非有任何重大异议,否则这可能是我将使用的方法.
  • 一个想法是绑定到mainWindow.windowController.document ...这很接近,除了当我的共享窗口变为main时,这个绑定就会消失.所以我真的需要找到最前面的文档窗口的控制器(以及正确的类).

这些似乎都不对.有没有更好的方法来做到这一点,我错过了?

cocoa key-value-observing cocoa-bindings

12
推荐指数
1
解决办法
973
查看次数

如何使用Cocoa查找任何给定日期的星期几

我想弄清楚任何特定日期(即2009年6月27日)的哪一天(即周一,周五......)

谢谢.

cocoa objective-c nsdate nscalendar nsdatecomponents

12
推荐指数
3
解决办法
2万
查看次数

stringByAppendingFormat不起作用

我有一个NSString并且无法应用以下语句:

NSString *myString = @"some text";
[myString stringByAppendingFormat:@"some text = %d", 3];
Run Code Online (Sandbox Code Playgroud)

没有日志或错误,字符串不会被更改.我已经尝试过使用NSString(如文档所述)和NSMutableString.

任何线索最受欢迎.

objective-c string-concatenation nsstring

12
推荐指数
3
解决办法
2万
查看次数

盲人程序员:在Xcode中设计一个界面而不能在视觉上定位UI元素

我是Mac和iOS编程的新手,最近决定真正认真地开发两种平台的应用程序.我采取的第一步是注册Mac和iOS开发人员程序,下载Xcode并学习一本关于Objective-C的书.我花了6周的时间熟悉Objective-C,它的语法,概念和Foundation框架,并且纯粹是为了这些目的开发命令行应用程序.

现在,下一步似乎是Cocoa和开发提供图形用户界面的应用程序,我现在正在研究.现在,这是我遇到的一个问题:由于我完全失明,我无法直观地看到屏幕.因此,我使用VoiceOver,OS X和iOS内置的屏幕阅读器.也许有些开发者在某些时候听说过VoiceOver,因为Apple已经指定了与VoiceOver有关的各种可访问性指南.在这方面,非常感谢所有遵守这些指导方针的人,非常感谢您的努力!:-)

对于Xcode,它实际上与VoiceOver(VO)非常有效.添加新的UI元素也没什么大不了的,我可以从库中复制它们并将它们粘贴到视图中.但是,我不能拖累它们并以吸引人的方式设置它们,或者至少我还没有找到任何方法来实现它,因为我刚刚开始!

现在,我真的想知道是否有任何"文本"方式来安排UI元素.我知道检查员有很多种选择,但是我不确定他们是否会让我说手动更改UI元素的坐标.此外,我已经阅读了有助于创建一致布局的新约束,但此时我并不熟悉如何使用它们或者它们在我的情况下是否有用.

此外,我确实认识到,生成一个100%吸引有目标的最终用户的界面对我来说可能是不可能的,因为我很难决定颜色选择或设计徽标.因此,我可能需要雇用某人来做这些事情.但是,如果我可以粗略地指定布局,那对我来说已经很有帮助了!

感谢您的任何想法/建议:-)

知更鸟

xcode interface voiceover

12
推荐指数
1
解决办法
685
查看次数

为Python类生成文档

我即将开始一个项目,我将成为唯一一个做实际代码的人和两个经验不足的程序员(可怕的想象自己经验丰富!)将会一直在观看并对程序提出建议.

是否有一个好的(免费)系统,我可以根据我编写的代码提供类和函数的文档?它可能会帮助他们掌握数据结构.

python documentation data-structures

11
推荐指数
2
解决办法
1000
查看次数

使用原始元素的可变副本复制NSArray

我正在一个类中创建一个字典数组.我想将该数组的副本返回给要求它的任何其他对象.传递给其他对象的副本需要在不修改原始对象的情况下进行修改.

所以我在我的类的getter方法中使用以下内容来保存"master"数组:

[[NSMutableArray alloc] initWithArray:masterArray copyItems:YES];
Run Code Online (Sandbox Code Playgroud)

但是,这似乎使所有字典内部不可变.我怎么能避免这个?

我想我在这里遗漏了一些东西.任何帮助都感激不尽!

cocoa objective-c copying nsmutablearray nsarray

11
推荐指数
3
解决办法
8306
查看次数

如何在OS X 10.5和10.6上获取通用文件夹图标的NSImage

我正在编写一个Cocoa应用程序,它在NSOutlineView中显示存档文件的内容.我在大纲列中为NSBrowserCell提供了一个自定义图标,它工作得很好,但我遇到了一个小麻烦 - 使用[NSImage imageNamed:@"NSFolder"]10.6返回正确的图像(通用文件夹图标),但在10.5它返回nil,所以所有的文件夹图标消失.(我找不到有关NSFolder图标名称的任何文档,看看它什么时候被引入 - 我通过反复试验得到它.)

是否有一种不推荐使用的方法来获取适用于10.5和10.6的通用文件夹图标?

directory cocoa icons objective-c nsimage

11
推荐指数
1
解决办法
4435
查看次数

资产目录命名颜色不可用于@IBInspectable属性

对于我正在创建的iPad应用程序,我的项目中有一个包含多个颜色集的资产目录.我知道我可以将这些拖放到代码本身,并为@IBInspectable类属性的默认颜色这样做.但是,当我在Interface Builder中使用它们时,我的颜色集可用于UIView的背景颜色等属性,但它们不适用于@IBInspectable允许用户设置颜色的任何属性.有没有办法将我的颜色集暴露给我的@IBInspectable类到Interface Builder中可以选择的位置?当然,我总是可以通过编程方式设置它们,但是为了将来使用和方便起见,如果Apple目前支持它,我想让它工作.如果该信息相关,我的色彩资产目录肯定会添加到我的构建设置中的项目的Bundle Resources中.

我的问题截图:

第一张图像显示了我的颜色集可以选择的位置,如UIView的背景.接下来的两个展示了我们的@IBInspectable房产无法使用的地方.

可为UIView背景选择颜色组

@IBInspectable属性显示颜色集缺失

@IBInspectable属性无法选择颜色集

interface-builder uicolor asset-catalog swift ibinspectable

11
推荐指数
1
解决办法
786
查看次数