Questions tagged «cocoa»

Cocoa是Apple的macOS应用程序开发框架,由Foundation,Application Kit和Core Data组成。对iOS问题使用“可可触摸”标签。

6
使用NSURL测试文件是否存在
Snow Leopard引入了许多新方法来使用NSURL对象来引用文件,而不是路径名或Core Services的FSRefs。 但是,有一项任务我找不到基于URL的方法来执行:测试文件是否存在。我正在寻找-[NSFileManager fileExistsAtPath:]的基于URL的版本。像该方法一样,YES如果URL描述了任何内容,无论是常规文件,目录还是其他内容,它都应返回。 我可以尝试查找各种资源值,但是如果文件不存在,则不会明确保证不存在任何资源值,如果确实存在,其中的某些资源(例如NSURLEffectiveIconKey)可能会很昂贵。 我可以只使用NSFileManager的fileExistsAtPath:,但是如果有一种更现代的方法,我宁愿使用它。 在Cocoa,CF或Core Services中是否有简单的方法或功能可以保证/记录下来,以告诉我给定的文件(或文件引用)URL是否引用存在的文件系统对象?

2
如何使用NSNotificationcenter的对象属性
有人可以告诉我如何在NSNotifcationCenter上使用对象属性。我希望能够使用它将整数值传递给我的选择器方法。 这就是我在UI视图中设置通知侦听器的方式。好像我要传递一个整数值,我不确定用nil替换什么。 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receiveEvent:) name:@"myevent" object:nil]; - (void)receiveEvent:(NSNotification *)notification { // handle event NSLog(@"got event %@", notification); } 我从另一个这样的类调度通知。该函数传递了一个名为index的变量。我想以某种方式触发此通知。 -(void) disptachFunction:(int) index { int pass= (int)index; [[NSNotificationCenter defaultCenter] postNotificationName:@"myevent" object:pass]; //[[NSNotificationCenter defaultCenter] postNotificationName:<#(NSString *)aName#> object:<#(id)anObject#> }


16
如何在OS X或iOS(不使用Gestalt)的运行时确定OS版本?
从CarbonCore/OSUtils.hOS X 10.8 Mountain Lion开始不推荐使用位于其中的Gestalt()函数。 我经常使用此功能在运行时测试OS X操作系统的版本(请参见下面的玩具示例)。 在Cocoa应用程序中,在运行时还可以使用什么其他API来检查OS X操作系统版本? int main() { SInt32 versMaj, versMin, versBugFix; Gestalt(gestaltSystemVersionMajor, &versMaj); Gestalt(gestaltSystemVersionMinor, &versMin); Gestalt(gestaltSystemVersionBugFix, &versBugFix); printf("OS X Version: %d.%d.%d\n", versMaj, versMin, versBugFix); }

1
您是否需要在GCD中的一个块内创建NSAutoreleasePool?
通常,如果生成后台线程或在NSOperationQueue上运行NSOperation,则需要为该线程或操作创建一个NSAutoreleasePool,因为默认情况下不存在。 相同的规则是否适用于放置在Grand Central Dispatch队列中并在非主线程上运行的块?也就是说,您是否需要在分配给主队列以外的任何其他块的每个块内创建一个NSAutoreleasePool? 在有限的测试中,我没有看到通常在后台线程或NSOperation中看到的自动释放对象的控制台警告。但是,我似乎找不到关于此的权威文档,因此我想知道是否有人可以指出该声明的位置。

4
如何使用Cocoa Auto Layout使用窗口调整自定义视图的大小?
我有一个带有单个自定义视图的窗口,并且希望该自定义视图随窗口调整大小,以便它随时可以完全填充它。如果我写: NSView *contentView = [self.window contentView]; CustomView *customView = [[CustomView alloc] initWithFrame:[contentView bounds]]; [contentView addSubview:customView]; [contentView addConstraint: [NSLayoutConstraint constraintWithItem:customView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:contentView attribute:NSLayoutAttributeWidth multiplier:1 constant:0]]; [contentView addConstraint: [NSLayoutConstraint constraintWithItem:customView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:contentView attribute:NSLayoutAttributeHeight multiplier:1 constant:0]]; 然后,窗口不允许我调整其大小。 如果我添加: [customView setTranslatesAutoresizingMaskIntoConstraints:NO]; 然后,自定义视图不会出现(drawRect:似乎从未调用过)。我尝试了不同的方法(包括视觉格式@"|[customview]|"),但始终遇到相同的问题。我知道可以使用较旧的自动调整大小系统来实现,方法是: [customView setAutoresizingMask:NSViewWidthSizable|NSViewHeightSizable]; 但是我想使用Cocoa Auto Layout系统,并且想在更复杂的情况下使用它(例如总是填充窗口的几个自定义视图)。 有谁知道哪里出了问题,我应该如何使用自动版式系统来获得所需的结果?
71 cocoa  layout 



19
如何将iPhone OSStatus代码转换为有用的东西?
我对这个iPhone SDK及其文档感到不快... 我正在呼叫AudioConverterNew 在“返回”下的文档中:它说“返回状态码” ...真的... 到目前为止,通过玩弄参数,我只能得到两个不同的错误,在Audio Converter参考的底部都没有列出。 它们是'mrep'和'?tmf'(将OSStatus广播到char数组),但是具体的代码并不是真正的重点。 据我所知,随机错误代码是在随机文件中定义的,因此您不能仅搜索一个文件,也找不到帮助文档,该文档仅允许您搜索错误代码以获取更多信息,并从我可以说,在OS X中,您可以使用GetMacOSStatusErrorString()将错误转换为有用的东西,但是没有iPhone等效的东西吗? 任何帮助将不胜感激。 编辑: 好的,所以将它们强制转换为反向(我检查了“ mrep”但没有回过头来),fmt吗?在音频转换器api的列表中,如果有点含糊,但还算公道,仍然不存在“烫发”(尽管可能与不支持aac解码的模拟器有关),这很容易解释。一般问题仍然存在。

4
在主线程上发布NSNotification
我发现了以下代码片段,该片段允许NSNotification从任何后台线程发布到主线程上。我想知道这是否是一种安全且可以接受的做法? dispatch_async(dispatch_get_main_queue(),^{ [[NSNotificationCenter defaultCenter] postNotificationName:@"ImageRetrieved" object:nil userInfo:imageDict]; });





7
导致无法识别的选择器的Objective-C类别
我的项目有一个UIImage我要从另一个类调用的类别函数。我正确地导入了图像类别的头文件,并且我得到了要编译的项目而没有任何警告。 问题是,当我调用UIImagecategory函数时,看到带有的无法识别的选择器错误NSInvalidArgumentException。如果正确链接了所有内容,为什么会看到此消息? #import <UIKit/UIKit.h> @interface UIImage (DRShare) + (UIImage*) imageNamed:(NSString*)name; @end @implementation UIImage (DRShare) + (UIImage*) imageNamedDR:(NSString*)name{ CGFloat s = 1.0f; if([[UIScreen mainScreen] respondsToSelector:@selector(scale)]){ s = [[UIScreen mainScreen] scale]; } NSString *path = [NSString stringWithFormat:@"%@%@%@.png",kImagesPath,name,s > 1 ? @"@2x":@""]; return [UIImage imageWithContentsOfFile:DRBUNDLE(path)]; } @end 调用它的文件: backgroundView = [[UIImageView alloc] initWithImage:[UIImage …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.