小编Sir*_*tty的帖子

Cocoa - NSUserDefaults值的变化通知?

假设我有一个密钥@"MyPreference",通过NSUserDefaults存储相应的值.

修改值时有没有办法通知?

或者可以通过绑定来完成?(但是这种情况下,我不希望将值绑定到UI元素,而是希望我的对象被通知更改,以便我可以执行其他任务.)

我知道可以观察到NSUserDefaultsDidChangeNotification,但这似乎是一种全有或全无的方法,并且似乎没有一种机制来获取被修改的特定键值对.(随意纠正.)

cocoa notifications preferences

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

Shell脚本 - 使用字符串列表搜索和替换多个文件中的文本

我有一个文件"changesDictionary.txt"包含(可变数量)键值字符串对.

例如

"textToSearchFor"="theReplacementText"

(字典的格式不重要,可根据需要进行更改.)

我需要遍历给定目录的内容,包括子目录.对于扩展名为".txt",我们搜索遇到的每个文件的每个在changesDictionary.txt按键,用替换字符串值替换每个发现的实例.

即搜索和替换多个文件,但使用搜索/替换术语列表而不是单个搜索/替换术语.

我怎么能这样做?(我研究了单个搜索/替换示例,但不了解如何在文件中进行多次搜索.)

只要我可以在Mac OS X中从命令行运行它,实现(bash,perl,无论如何)并不重要.感谢您的帮助.

unix replace

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

Lua在Mac OS X上编译脚本 - Intel vs PPC

多年来一直在Mac OS X通用二进制应用程序中使用Lua 5.0.Lua脚本使用luac编译,编译后的脚本与app捆绑在一起.他们在Tiger和Leopard,Intel或PPC中都能正常使用.

为了避免当时的库问题,我只是将Lua src树添加到我的Xcode项目中并按原样编译,没有任何问题.

是时候更新到更现代的Lua版本,所以我用5.1.4替换了源代码树.我使用make macosx重建了luac (机器在Intel上运行Leopard).

与往常一样,未编译的脚本在Tiger和Leopard,Intel和PPC中正常工作.

但是,现在编译的脚本无法在PPC计算机上加载.

所以我用'ansi'标志重建了luac,并重新编译了我的脚本.同样的错误.同样,'generic'的构建标志也没有产生任何乐趣.

谁能告诉我接下来能做些什么?

macos lua cross-compiling luac

4
推荐指数
1
解决办法
2999
查看次数

在Cocoa中加载OpenAL的.wav文件

我需要将声音文件加载到基于Cocoa的OpenAL应用程序.

进展:

  • OpenAL实用程序函数alutLoadWAVFile已被弃用; Mac OS X SDK中不再包含alut标头.根据TechNotes,实际代码仍然存在二进制兼容性.但是,如果我尝试为函数添加声明,代码将编译但链接器将中止,抱怨无法找到alutLoadWAVFile的符号.(我正在链接到OpenAL.framework).

  • 但是,Apple OpenAL示例代码仍然使用此符号.当我清理示例代码项目时,它编译和链接就好了.然而,没有声明可以找到该功能.(旁边的问题:如何构建和链接呢?)

所以,我在Apple发现了George Warner的一些代码,其中包含alutCreateBufferFromFile和alutLoadMemoryFromFile的替换函数.虽然能够直接从大多数任何类型的音频文件创建OpenAL缓冲区,但代码似乎仅支持8位单声道声音文件.16位立体声或单声道44khz文件导致令人讨厌的嘶嘶声和剪辑.(文件还可以; Quicktime播放它们就好了.)

因此,我的问题:有人可以指点一些.wav加载Cocoa/Carbon的代码/帮助,适合与OpenAL Buffer一起使用吗?谢谢.

audio cocoa file loading wav

3
推荐指数
1
解决办法
5951
查看次数

Lua垃圾收集表,嵌套表

[我读过Lua手册,但它没有提供可靠的答案.]

假设我有一个Lua Table,充当索引数组:

local myArray = {};
myArray[1] = "Foo";
myArray[2] = "Bar";
Run Code Online (Sandbox Code Playgroud)

我该如何最好地处理这张桌子?我只是将myArray设置为nil吗?或者我是否必须遍历数组并将每个索引元素设置为nil?

同样地,假设我有一个Lua表,充当字典:

local myDictionary = {};
myDictionary["key1"] = "Foo";
myDictionary["key2"] = "Bar";
Run Code Online (Sandbox Code Playgroud)

我可以将'myDictionary'设置为nil,还是必须迭代?

最后,我该怎么做,内存管理明智,我有嵌套表的地方?例如

local myNestedCollection = {};
myNestedCollection[1] = {1, 2, 3};
myNestedCollection[2] = {4, 5, 6};
Run Code Online (Sandbox Code Playgroud)

我是否需要遍历每个子表,将它们设置为nil?谢谢你的帮助.

lua memory-management lua-table

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

Cocoa - 来自NSDate,NSCalendarDate的本地化字符串

我正在使用NSDate来获取诸如"18 Jun 09"之类的字符串,代码如下:

NSDate *theDate = [NSDate date];
NSString *dateString = [theDate descriptionWithCalendarFormat:@"%d %b %y"
        timeZone:nil
        locale: nil];
Run Code Online (Sandbox Code Playgroud)

这有效,但只会产生英文输出.我需要将输出本地化为用户的默认语言.

Cocoa(在这种情况下是Mac OS X 10.4,10.5)是否为这种本地化提供了便利,还是我必须手动本地化每天和每个月的名字?

(我提供了一个区域设置,但是虽然确实提供了日期的特定于区域设置的顺序,但它似乎不会对日期月份名称进行任何本地化.)

cocoa localization nsdate

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

Cocoa在循环中自动释放

(我已经阅读了Apple的内存管理指南,以及其他内存管理帮助,但我仍然对以下内容感到困惑)

在循环中,如何使用便捷方法进行内存管理?我是否需要显式创建自动释放池然后将其排空.或者这一切都是自动化的吗?

例如

for (i=0; i<numFilePaths; i++) {
    // ...
    NSString *componentString = [someString lastPathComponent];
    // ...
}
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我反复从lastPathComponent获取一个新字符串.暂时忽略同一件事中的不良举止,我该如何处理这种记忆管理情况呢?

'componentString'根本没有保留,它只在循环中有生命周期,仅用于与其他字符串进行比较.谢谢你的帮助.

memory string cocoa loops

0
推荐指数
1
解决办法
123
查看次数