Questions tagged «cocoa»

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


11
如何从UIImage(可可触摸)或CGImage(核心图形)获取像素数据?
我有一个UIImage(可可粉)。由此,我很高兴获得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; }

10
CSS打印:避免在页面之间插入一半的DIV?
我正在为一款软件编写插件,该插件需要大量项目并将其弹出到Cocoa中的WebView中的HTML中(该WebView使用WebKit作为其渲染器,因此基本上您可以假定正在以下位置打开该HTML文件)苹果浏览器)。 它制作的DIV具有动态高度,但变化不大。它们通常在200像素左右。无论如何,每个文档中有大约六百个这样的项目,所以我很难过要打印它。除非我很幸运,否则每页底部和顶部都有一个条目被切成两半,这使得使用打印输出变得非常困难。 我尝试过分页之前,分页之后,分页内部以及这三者的组合均无济于事。我认为可能是WebKit无法正确呈现指令,或者可能是我对如何使用它们缺乏了解。无论如何,我需要帮助。打印时如何防止DIV切入一半?

20
迭代时从NSMutableArray中删除的最佳方法?
在可可中,如果我想遍历NSMutableArray并删除多个符合特定条件的对象,那么在每次删除对象时都无需重新启动循环的最佳方法是什么? 谢谢, 编辑:只是为了澄清-我一直在寻找最佳方法,例如,比手动更新索引更优雅的方法。例如在C ++中,我可以做到; iterator it = someList.begin(); while (it != someList.end()) { if (shouldRemove(it)) it = someList.erase(it); }
194 objective-c  cocoa 

28
iOS-构建失败,CocoaPods无法找到头文件
我有一个使用CocoaPods的iOS项目。一切工作都顺利进行,直到另一个开发人员开始从事同一项目。他做了一些更改(据我所知仅对代码进行了更改),并在存储库中创建了一个新分支。我已经签出他的分支并尝试构建它,但出现错误:找不到ASLogger / ASLogger.h文件。 即使删除整个项目并重新制作副本并使用“ pods install”。构建失败仍然存在。您知道问题可能在哪里吗?如果您需要更多信息,请询问。

12
改组NSMutableArray的最佳方法是什么?
如果您有个NSMutableArray,您如何随机洗牌? (我对此有自己的答案,发布在下面,但是我是可可的新手,我想知道是否有更好的方法。) 更新:正如@Mukesh所指出的那样,从iOS 10+和m​​acOS 10.12+开始,有一种-[NSMutableArray shuffledArray]方法可以用于随机播放。有关详细信息,请参见https://developer.apple.com/documentation/foundation/nsarray/1640855-shuffledarray?language=objc。(但是请注意,这将创建一个新数组,而不是将元素改组到位。)

6
为什么单元测试中的代码无法找到包资源?
我正在单元测试中的某些代码需要加载资源文件。它包含以下行: NSString *path = [[NSBundle mainBundle] pathForResource:@"foo" ofType:@"txt"]; 在应用程序中,它运行得很好,但是当由单元测试框架运行时pathForResource:返回nil,这意味着它无法定位foo.txt。 我已经确保它foo.txt包含在单元测试目标的“ 复制捆绑资源”构建阶段中,那么为什么找不到文件?


4
为什么通常给Objective-C委托赋予属性而不是保留?
我正在浏览由史蒂文森(Scott Stevenson)维护的精彩博客,并且我试图理解一个基本的Objective-C概念,即向代表分配“分配”属性与“保留”属性。请注意,在垃圾回收环境中两者都是相同的。我最关心的是基于非GC的环境(例如:iPhone)。 直接来自Scott的博客: “ assign关键字将生成一个设置器,该设置器将值直接分配给实例变量,而不是复制或保留该值。这最适合诸如NSInteger和CGFloat之类的原始类型,或不直接拥有的对象(例如委托)。” 您不直接拥有委​​托对象是什么意思?我通常会保留我的代表,因为如果我不希望他们走入深渊,保留会为我解决。我通常将UITableViewController从其各自的dataSource和委托中分离出来。我也保留该特定对象。我想确保它永远不会消失,所以我的UITableView总是有它的委托。 有人可以进一步解释我错在哪里/为什么错了,以便我能了解在Objective-C 2.0编程中使用委托上的assign属性而不是retain的常见范例吗? 谢谢!

6
如何为Mac创建菜单栏应用程序
编辑:这是一个很好的现成的菜单栏的应用程序在这里(GitHub的源)通过这个答案。 我想知道如何制作菜单栏应用程序,这样做的要求是什么? 我看到菜单栏的一个简单应用程序是使用浏览器打开链接,我想创建类似的东西。 这是我喜欢制作的应用程序。
175 macos  cocoa  menubar 

1
在NSUserDefaults中存储NSDate的最佳方法是什么?
我遇到过两种方法将NSDate存储在NSUserDefaults中。 选项1-setObject:forKey: // Set NSDate *myDate = [NSDate date]; [[NSUserDefaults standardUserDefaults] setObject:myDate forKey:@"myDateKey"]; // Get NSDate *myDate = (NSDate *)[[NSUserDefaults standardUserDefaults] objectForKey:@"myDateKey"]; 选项2-timeIntervalSince1970 // Set NSDate *myDate = [NSDate date]; NSTimeInterval myDateTimeInterval = [myDate timeIntervalSince1970]; [[NSUserDefaults standardUserDefaults] setFloat:myDateTimeInterval forKey:@"myDateKey"]; // Get NSTimeInterval myDateTimeInterval = [[NSUserDefaults standardUserDefaults] floatForKey:@"myDateKey"]; NSDate *myDate = …

13
解决Objective-C名称空间冲突的最佳方法是什么?
Objective-C没有名称空间;与C非常相似,所有内容都位于一个全局名称空间内。常见的做法是在类的前面加上缩写,例如,如果您在IBM工作,则可以给它们加上“ IBM”作为前缀。如果您为Microsoft工作,则可以使用“ MS”;等等。有时,缩写是指项目,例如Adium在类的前面加上“ AI”(因为后面没有公司可以使用缩写)。苹果为类添加NS前缀,并说该前缀仅保留给苹果。 到目前为止一切顺利。但是在类名前面附加2到4个字母是一个非常非常有限的名称空间。例如,MS或AI可能具有完全不同的含义(例如AI可能是人工智能),并且其他一些开发人员可能决定使用它们并创建一个同名的类。Bang,名称空间冲突。 好的,如果这是您自己的类之一与所使用的外部框架之间的冲突,则可以轻松更改类的命名,没什么大不了的。但是,如果您使用两个外部框架,这两个框架都没有来源并且您不能更改,那该怎么办?您的应用程序与它们两者都链接,您会遇到名称冲突。您将如何解决这些问题?以一种仍然可以同时使用两个类的方式来解决它们的最佳方法是什么? 在C语言中,您可以通过不直接链接到库来解决这些问题,而是在运行时使用dlopen()加载库,然后使用dlsym()找到要查找的符号并将其分配给全局符号(即可以以您喜欢的任何方式命名),然后通过此全局符号进行访问。例如,如果由于某些C库具有名为open()的函数而发生冲突,则可以定义一个名为myOpen的变量,并将其指向该库的open()函数,因此当您要使用系统open()时,您只需使用open(),当您要使用另一个时,可以通过myOpen标识符进行访问。 在Objective-C中是否可能有类似的事情,如果没有,是否可以使用其他聪明,棘手的解决方案来解决命名空间冲突?有任何想法吗? 更新: 只是为了澄清这一点:当然欢迎提出建议如何避免名称空间冲突或如何创建更好的名称空间的答案;但是,我不会接受他们作为答案,因为他们不能解决我的问题。我有两个库,它们的类名冲突。我不能改变他们。我没有任何一个的来源。碰撞已经存在,而有关如何提前避免的提示将不再有用。我可以将它们转发给这些框架的开发人员,并希望他们将来选择更好的名称空间,但是目前我正在寻找一种解决方案,以在单个应用程序中立即使用这些框架。有什么解决办法可以做到这一点?

1
如何在Swift中从NSData初始化字符串
我一直在尝试从NSDataSwift中初始化一个字符串。 苹果在NSString Cocoa文档中说您必须使用以下代码: init(data data: NSData!, encoding encoding: UInt) 但是,苹果没有提供任何用法或放置示例的示例init。 我正在尝试将以下代码从Objective-C转换为Swift NSString *string; string = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding]; 我一直在尝试许多可能的语法,例如以下语法(当然它不起作用): var string:NSString! string = init(data: fooData,encoding: NSUTF8StringEncoding)
173 string  swift  cocoa  nsdata 

10
Objective-C可可应用程序中的正则表达式
初始谷歌搜索表明在Objective-C Cocoa应用程序中没有内置的方式来执行正则表达式。 所以有四个问题: 是真的吗 你在跟我开玩笑吗? 好的,那么您推荐一个不错的开源库吗? 有什么方法可以导入NSScanner类而无需导入库就足够接近?
173 objective-c  regex  cocoa 

8
如何将CFStringRef转换为NSString?
NSString *aNSString; CFStringRef aCFString; aCFString = CFStringCreateWithCString(NULL, [aNSString UTF8String], NSUTF8StringEncoding); aCFString = CFXMLCreateStringByUnescapingEntities(NULL, aCFString, NULL); 我如何获得新NSString的aCFString?
169 cocoa  string  cfstring 

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.