我正在学习objective-c并不断碰到@符号.它用于不同的场景,例如在字符串的开头或合成访问器方法.
@符号在objective-c中的含义是什么?
我正在学习Objective-C和Cocoa并且遇到过这样的声明:
Cocoa框架期望全局字符串常量而不是字符串文字用于字典键,通知和异常名称,以及一些带字符串的方法参数.
我只使用更高级别的语言,所以从来没有必要考虑字符串的细节.字符串常量和字符串文字之间有什么区别?
我正在努力理解线性分区问题的动态编程解决方案.我正在阅读算法设计手册,问题在8.5节中描述.我已经无数次阅读了这个部分,但我只是没有得到它.我认为这是一个糟糕的解释(我现在读到的内容已经好多了),但是我还没有能够很好地理解这个问题以寻找替代解释.欢迎链接到更好的解释!
我找到了一个页面,其中包含类似于本书的文本(可能来自本书的第一版):分区问题.
第一个问题:在本书的示例中,分区从最小到最大排序.这只是巧合吗?从我可以看出,元素的排序对算法并不重要.
这是我对递归的理解:
让我们使用以下序列并将其分为4:
{S1...Sn} = 100 150 200 250 300 350 400 450 500
k = 4
Run Code Online (Sandbox Code Playgroud)
第二个问题:这就是我认为递归将如何开始 - 我理解正确吗?
第一次递归是:
100 150 200 250 300 350 400 450 | 500 //3 partition to go
100 150 200 250 300 350 400 | 450 | 500 //2 partition to go
100 150 200 250 300 350 | 400 | 450 | 500 //1 partition to go
100 150 200 250 300 | 350 | …Run Code Online (Sandbox Code Playgroud) 我正在编写一个关于iPhone音频的章节,并且遇到了一段我无法理解的代码:
while (aqc.playPtr < aqc.sampleLen)
{
select(NULL, NULL, NULL, NULL, 1.0);
}
Run Code Online (Sandbox Code Playgroud)
(完整代码示例在第163-166页).根据我对代码的理解,音频正在另一个线程上处理,而while循环就是为了防止主线程在音频仍在处理时终止.
我不明白的是为什么select()要用来代替sleep().
从我所读到select()的用于监视I/O的变化并传递它的NULL并没有做任何有意义的事情.我已经运行了代码sleep(),它按预期工作.(我对低级别POSIX的了解几乎不存在.)
我想将项目添加为子项目.当我将子项目拖到主项目中时,它显示为文件引用而不是子项目.下图解释了问题:

我正在使用一对使用指针作为唯一键的函数.我想声明一个常量指针用作键.这样做最安全,最清晰的方法是什么?
这里有两种可能的方法,但两者都有缺点.
自引用指针:
static const void * const propertyKey = &propertyKey;
//...
objc_getAssociatedObject(object, propertyKey);
Run Code Online (Sandbox Code Playgroud)
缺点:宣言长而可怕!很容易混淆那些不知道它是什么的人.好处:一旦你了解它的功能就很难用,它很容易使用.
应该引用的静态const:
static const char propertyKey;
//...
objc_getAssociatedObject(object, &propertyKey);
Run Code Online (Sandbox Code Playgroud)
缺点:使用时必须引用变量而不是简单地使用变量,这很容易被忽略(但编译器应该将其指出为类型不匹配).如果声明被修改以便分配一个值,那么它可能会产生灾难性的影响,因为无法再保证指针的唯一性.好处:宣言更容易理解.
我不认为其中任何一个都是显而易见的.有更好的建议吗?
我正在创建一个需要从网页获取一些数据的iOS应用程序.我的第一个是使用NSXMLParser initWithContentsOfURL:和解析NSXMLParser代表的HTML .然而,这种方法似乎很快就会变得痛苦(例如,如果改变了HTML,我将不得不重写解析代码,这可能很尴尬).
看到我正在加载一个网页,我也看了一下UIWebView.看起来UIWebView可能是要走的路.stringByEvaluatingJavaScriptFromString:似乎是一种非常方便的方法来提取数据,并允许将javascript存储在一个单独的文件中,如果HTML发生变化,该文件很容易编辑.然而,使用UIWebView似乎有点hacky(看作UIWebView是一个UIView子类,它可能会阻止主线程,并且文档说javascript有10MB的限制).
在我遇到困难之前,有没有人对解析XML/HTML有任何建议?
更新:
我写了一篇关于我的解决方案的博客文章:iOS中的HTML解析/屏幕抓取
我的正则表达式和javascript上有点生疏.我有以下字符串var:
var subject = "javascript:loadNewsItemWithIndex(5, null);";
Run Code Online (Sandbox Code Playgroud)
我想5使用正则表达式提取.这是我的正则表达式:
/(?:loadNewsItemWithIndex\()[0-9]+/)
Run Code Online (Sandbox Code Playgroud)
应用如下:
subject.match(/(?:loadNewsItemWithIndex\()[0-9]+/)
Run Code Online (Sandbox Code Playgroud)
结果是:
loadNewsItemWithIndex(5
Run Code Online (Sandbox Code Playgroud)
什么是最简洁,最可读的提取方式5?是否可以通过loadNewsItemWithIndex(从匹配中排除而不是匹配5作为子组来完成此操作?
我想NSFetchRequest按实体对结果进行分组.实体都共享相同的抽象父级.例如:
animal
|
|-cat
|
|-dog
Run Code Online (Sandbox Code Playgroud)
在NSFetchRequest已includesSubentities设定TRUE和entity设定animal.它可以设置sectionNameKeyPathNSFetchedResultsController来的entity.name,但它是不可能做的一样sortDescriptors的的NSFetchRequest由于事实sortDescriptors是(在数据库中的数据,即,在不类方法)应用到存储的属性.因此,按实体类型分组的唯一方法是向超类添加属性,子类可以使用该属性来标识自己.
这似乎很疯狂,因为它破坏了继承的有用性.我查看了SQLite数据库,实体类型与属性存储在同一个表中,因此所需的数据已经存在.
总结:是否可以在NSFetchRequest不添加其他属性的情况下按子类排序?
我正在尝试将AudioFilePlayer AudioUnit连接到AU3DMixerEmbedded Audio Unit,但我没有成功.
这是我正在做的事情:
创建一个AUGraph与NewAUGraph()
打开图表
初始化图表
添加3个节点:
kAudioUnitSubType_RemoteIOkAudioUnitSubType_AU3DMixerEmbeddedkAudioUnitSubType_AudioFilePlayer连接节点:
配置filePlayer音频单元以播放所需的文件
启动图表
这不起作用:它在AUGraphInitialize上出错,错误为10868(kAudioUnitErr_FormatNotSupported).我认为问题是由于filePlayer和混音器之间的音频格式不匹配.我认为这是因为: - 如果我注释掉将filePlayerNode连接到mixerNode(AUGraphConnectNodeInput(_graph, filePlayerNode, 0, mixerNode, 0))并注释掉第6步,那么就不会报告任何错误.- 如果我将filePlayerNode直接连接到outputNode(AUGraphConnectNodeInput(_graph, filePlayerNode, 0, outputNode, 0))来替换步骤3,则播放音频.
在将filePlayerNode连接到mixerNode时我缺少哪些步骤?
这是完整的代码.它基于Apple的示例代码和我从互联网上找到的其他样本.(AUGraphStart后称):
- (id)init
{
self = [super init];
if (self != nil)
{
{
//create a new AUGraph
CheckError(NewAUGraph(&_graph), "NewAUGraph failed");
// opening the graph opens all contained audio units but does …Run Code Online (Sandbox Code Playgroud) ios ×3
c ×2
iphone ×2
objective-c ×2
algorithm ×1
audiounit ×1
cocoa-touch ×1
coding-style ×1
core-audio ×1
core-data ×1
javascript ×1
nsxmlparser ×1
partitioning ×1
pointers ×1
posix ×1
regex ×1
string ×1
uiwebview ×1
xcode ×1