小编Pro*_*ber的帖子

GCD中的"全局队列"和"主队列"之间有什么区别?

在其他一些方面,有以下两种方式来获取队列GCD:

dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

dispatch_get_main_queue();
Run Code Online (Sandbox Code Playgroud)

如果我没有完全错误,"主队列"正在主线程上执行,并且适用于执行UI工作的"回调"块.

这是否意味着"全局队列"是在后台线程上运行的?

iphone concurrency grand-central-dispatch ios

56
推荐指数
4
解决办法
4万
查看次数

最大CGFloat值是否有常量?

我需要创建一个CGSize来计算任意长度的任意文本的文本高度.UIKit有这个很好的方法-sizeWithFont:constrainedToSize:我的文本只受宽度约束,但不是高度.

为此,我需要为高度设置最大可能的CGFloat.

有没有像"CGFloatMax"这样的常量?

objective-c core-foundation foundation cgfloat ios

51
推荐指数
5
解决办法
4万
查看次数

复制时如何用NSFileManager覆盖文件?

我正在使用此方法复制文件:

[fileManager copyItemAtPath:sourcePath toPath:targetPath error:&error];
Run Code Online (Sandbox Code Playgroud)

我想在文件存在时覆盖它.此方法的默认行为是抛出异常/错误"文件存在".当文件存在时.没有选项可以指定它应该覆盖.

那么最安全的方法是什么?

我会首先检查文件是否存在,然后将其删除,然后尝试复制?这有一个危险,即应用程序或设备在删除文件后的纳秒内关闭,但新文件尚未复制到该位置.那没什么.

也许我必须首先更改新文件的名称,然后删除旧的,然后重新更改新的名称?同样的问题.如果在这纳秒内应用程序或设备关闭并且重命名不会发生怎么办?

filesystems iphone nsfilemanager ipad ios

47
推荐指数
5
解决办法
4万
查看次数

URL和URI之间的区别?

可能重复:
URI和URL之间有什么区别?

只是为了正确:

URI =告诉你应该去哪个酒店睡觉.

URL =告诉你应该去哪个酒店的哪个房间睡觉.

所以URL更具体,它指向最终目的地.你想要的东西.虽然URI很奇怪.

那么,当URI不是URL时究竟是什么?真正的区别是什么?

url uri

36
推荐指数
2
解决办法
6万
查看次数

-systemFontOfSize:和-boldSystemFontOfSize之间是否有中等重量字体:?

-systemFontOfSize太薄了,而boldSystemFontOfSize太粗了.我需要介于两者之间.

当我创建像这样的UIFont时:

[UIFont boldSystemFontOfSize:14];
Run Code Online (Sandbox Code Playgroud)

然后调试器打印此字体信息:

font-family:".Helvetica NeueUI"; font-weight:bold; font-style:normal; font-size:14px

有时字体具有中等字体粗细.如何创建此类型的字体,但中等重量?

iphone uifont ipad ios

36
推荐指数
5
解决办法
2万
查看次数

在ARC下,Target-Action设计模式是不是很糟糕?

多年来我一直在关注一个名为Target-Action的伟大模式,如下所示:

当调用时,对象在指定的目标对象上调用指定的选择器.这在需要对任意方法进行简单回调的许多不同情况下非常有用.

这是一个例子:

- (void)itemLoaded {
    [specifiedReceiver performSelector:specifiedSelector];
}
Run Code Online (Sandbox Code Playgroud)

在ARC下,现在发现做这样的事情突然变得危险.

Xcode会发出如下警告:

PerformSelector可能导致泄漏,因为其选择器未知

当然,选择器是未知的,因为作为Target-Action设计模式的一部分,您可以指定您想要的任何选择器,以便在发生有趣的事情时接听电话.

这个警告最让我感到困惑的是它说可能存在潜在的内存泄漏.根据我的理解,ARC不会弯曲内存管理规则,而只是在正确的位置自动插入retain/release/autorelease消息.

另外需要注意的是:-performSelector:确实有一个id返回值.ARC分析方法签名,以便在方法返回+1保留计数对象时通过应用命名约定来确定.在这种情况下,ARC不知道选择器是-newFooBar工厂还是只是调用一个不可靠的工作方法(无论如何,这几乎都是Target-Action的情况).实际上,ARC应该已经认识到我不期望返回值,因此忘记任何可能的+1保留计数返回值.从这个角度来看,我可以看到ARC的来源,但仍然存在太多关于这在实践中意味着什么的不确定性.

这现在是否意味着在ARC下会出现一些错误,如果没有ARC,这种错 我不知道这会如何产生内存泄漏.有人可以举出这样做危险的情况,以及在这种情况下如何创建泄漏?

我真的用谷歌搜索了互联网,但没有发现任何网站解释原因.

xcode memory-management objective-c ios automatic-ref-counting

35
推荐指数
2
解决办法
2773
查看次数

如何防止搜索引擎索引我网站的单个页面?

我不希望搜索引擎索引我的版本说明页面.我怎么能这样做?

html seo search-engine

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

是否有具有推理功能的开源专家系统?

出于学习目的,我想研究一个开源专家系统,特别是可以推理和解释它的推理的专家系统.你知道哪些?

artificial-intelligence expert-system

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

如何正确命名通用应用程序的所有启动图像?

适用于iphone的Default.png,适用于iPhone 4的Default4.png(或者是Default@2x.png?)和Default-iPad.png.那是对的吗?

iphone ipad

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

当我创建一个新项目时,Xcode 4项目导航器中的"M"和"A"图标意味着什么?

Xcode 4在项目导航器中显示我文件旁边的灰色"M"和"A"图标.我相信它们与源代码控制有关.

重点是:我在Xcode 4中打开和编辑的所有旧Xcode 3项目都没有显示这些图标!我在Xcode 4中创建的新项目也不受源代码控制.

当我创建项目时,我取消选中"Git"选项.但是当点击文件时,Xcode仍然在检查器中显示"源控件"信息.最初由项目模板创建的所有文件都标记为"已提交",因为我自己添加的所有文件都不是.所以要么Xcode忽略了我不希望使用Git或者它是一个bug,或两者兼而有之.

更新:有人建议删除.git文件夹.因为它以点开头,所以它可能是一个隐藏文件夹,因此我在Finder中使用终端中的这个技巧使隐藏文件可见:

defaults write com.apple.finder AppleShowAllFiles TRUE
killall Finder
Run Code Online (Sandbox Code Playgroud)

但是,似乎我的项目文件夹中没有.Git文件夹(选中所有包含文件夹).但是,即使Git复选框被禁用,Xcode也会将我的新项目置于源代码管理之下.

如果我不想使用源代码管理,我怎么能摆脱它呢?

version-control xcode ios xcode4

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