在iOS 7中,Apple已经改为UIToolbar在其顶部显示1px的发际线.在某些情况下,这在视觉上会分散注意力,并且似乎没有任何公共API可以将其删除.
设置shadowImage不起作用.
我正在寻找一种以相对干净的方式去除发际线的方法,并保持普通的背景模糊.
注意:这是由于一些XCode beta版本中的错误已经修复.如果您遇到ARC问题,此问题和答案可能无法帮助您.
我正在将我的项目从手动引用计数迁移到ARC,并且偶然发现了一个问题:如何确保保留属性的自定义setter实际保留?
在myClass.h,我宣布了一个财产:@property (retain) NSDate *date.无论我是手动设置__strongivar还是自动生成它都无关紧要.
在实现中,我当然要@synthesize date实现一个自定义setter(或者只是下载demo Xcode项目):
- (void)setDate:(NSDate *)newDate
{
if (allowedToSetNewDate)
{
date = newDate;
}
}
Run Code Online (Sandbox Code Playgroud)
这似乎没有保留日期,并且message sent to deallocated instance当newName(自动)发布它来自哪里时,尝试myClass.date稍后访问时提供给我(提供Zombie已启用;否则,它只是静默崩溃).
更改使用的setter date = [newDate copy]可以解决错误,但实际上并不是我想要的.删除自定义setter也有效,但显然不是必需的.
我在这里错过了什么?如何确保保留属性的自定义setter实际保留在ARC环境中?这似乎是一项基本而且常见的任务,我认为我忽略了一些非常明显的事情.
(注意:这不属于任何Apple NDA的条款,因为ARC作为LLVM的一部分公开发布)
编辑:我已经创建了一个小型Xcode项目来演示该问题并将其上传到github.随意下载并玩游戏.我的机智已经结束了(尽管我的机智今天并不是最好的,不可否认).
编辑:对于此示例项目,此问题已解决(请参阅已接受的答案).不幸的是,在我无法分享的更大的项目中,问题仍然存在.作为一种解决方法,我添加了strong复合setter的重复属性(ivars不起作用).新的自定义setter现在看起来像这样:
- (void)setDate:(NSDate *)newDate
{
if (allowedToSetNewDate)
{
self.date_arcretain = newDate; //this property is only there as a workaround. ARC properly retains it, but …Run Code Online (Sandbox Code Playgroud) 我将很快启动中型iOS项目,这是一个以文档为中心的应用程序.
之后,该软件可能会被移植到Mac OS X.当然,整个UI都需要改变; 那不是我要问的.
是否有可能以跨平台(仅限Mac/iOS)或更容易移植的方式编写核心逻辑?以前是否有人这样做过,或者是为两个平台编写不同代码的常用方法?
我很感谢有关这方面的任何提示,无论是代码,框架,版本控制 - 任何事情.我不愿意意识到我只是在事后才把自己画成一个角落,所以我想尽可能地开始.
我正在写一个相当复杂的iPad应用 - 我的第一个更大的应用.
这个应用程序有一些自定义UIViews,提供相当复杂的数据,包括一个表.这些视图不占用整个屏幕,并且可以(并且可能会)在屏幕上随时存在许多视图(尽管只有一个将处于显示该表的"扩展"状态).
这是一个应该传达基本原则的基本例子: 
请注意,这些东西不应该在popovers中; 相反,FamilyViews展开以显示其详细数据.(还请注意,这个模型只是为了这个问题而创建的,与我的界面看起来没什么关系;我知道这不是好的屏幕设计)
我还没决定将这些自定义视图作为委托和数据源的对象:
我倾向于为他们自己的表制作这些"FamilyViews"委托和数据源中的每一个.对这些表的操作必须耦合到FamilyView的委托(ViewController),但这应该不是问题,是吗?
有人对此有一些意见吗?
我有一个UIView,它的高度和宽度在旋转到90度时互换.现在,当我尝试增加高度或宽度时,我看起来异常.如何更改旋转的UIView的高度?
在Xcode 4中,提交代码的键盘命令是cmd + alt + c.这会将您带到比较/评论屏幕.
现在,当您完成键入注释时,如何使用键盘接受提交?注释字段具有焦点,并且其中的标签不起作用.返回+修改键的任何组合也不起作用,因为不是cmd + s.
我是否真的必须使用鼠标提交提交,还是有一个我找不到的键盘快捷键?
为了调整应用程序的性能,Core Animation Instrument对于iOS开发人员来说是一个非常有用的工具.图层着色有助于快速找到潜在的瓶颈,获取FPS图也很有帮助.
不幸的是,这款乐器似乎无法用于Mac应用.
有没有替代品,或者我只是不够努力(Mark Dalrymple的高级Mac OS X编程确实提到了仪器)?
我需要做一个必须在主线程上发生的一系列可能的调用(因为否则UIKit会讨厌)."长"是指在iPad 3上每次持续运行10,000次.
显然,立即循环遍历所有这些可能不是最好的主意.
我不知道如何在主线程上执行所有这些,同时留下足够的呼吸空间来保持UIKit响应并且看门狗睡着了(即不会因为占用运行循环而终止).
有人有想法吗?我将瞄准iOS 5.
具体来说,我正在尝试做的是缓存UITextPositions,因为a UITextView显然采用非缓存的迭代方法来获取UITextPositions,这意味着它非常非常慢positionFromPosition:textview.beginningOfDocument offset:600011,但获取速度要快得多positionFromPosition:aPositionAt600000 offset:11.事实上,在我的测试案例中,前者需要超过100秒(在主线程上!),而后者几乎是瞬时的.
我知道Apple和共识都说在核心数据中,每个关系都应该有反转.这不是一个问题是否确实如此.我相信苹果和专家.我只想理解这个推理.不幸的是,往往没有给出理由.
有时,反向关系是不切实际的.有时候,我想放弃它们.但是我想知道这些权衡是什么(而不是一个不祥的"不要那样做,它是危险的 ").
那么,我问的是不放弃核心数据中的反向关系的原因是什么?
命名不带参数但可以返回错误的Objective-C选择器的最佳实践是什么?
示例(从Web获取音轨数据的方法):
- (NSData*) soundtrackData:????? error:(NSError**)error;
Run Code Online (Sandbox Code Playgroud) objective-c ×6
ios ×4
ipad ×2
macos ×2
cocoa ×1
cocoa-touch ×1
commit ×1
core-data ×1
instruments ×1
ios7 ×1
relationship ×1
uikit ×1
uitableview ×1
uitextview ×1
uiview ×1
xcode4 ×1