Apple关于关系删除规则的文档简单明了.但它只涉及一对多关系(一对一关系的删除规则很容易推断).目前尚不清楚这些规则对于多对一关系意味着什么.所以我们在这里澄清它们.
我们使用Apple文档中使用的Employees-Department示例.尽管这些规则适用于员工 - 部门关系,但现实生活的影响可能是荒谬的,但作为程序员,我们只是在谈论他们的逻辑含义.
拒绝
如果关系目标中存在对象,则无法删除源对象.
例如,如果要删除员工,无论其部门中是否还有其他员工,您必须确保首先删除该部门,否则无法删除该员工.
Nullify
从目标对象的反向关系中删除源对象.(参见@ bshirley的简明解释)
例如,如果您删除员工,请将其从其部门的员工关系中删除.只有当部门的剩余员工数量大于所需的最小数量,或者确保在下一次保存操作之前为部门添加新员工时,才有意义.
[ 问题:如果是最后一名员工,部门的员工关系是否会变空或者是否为空?]
(@TechZen回答:多对多关系总是返回一个设置对象.它永远不会是零.如果没有对象关系的另一面,集合是空的.)
级联 删除关系目标处的对象.
例如,如果删除员工,请同时删除其部门,即使部门中还有其他员工.
(使用警告:它通常会导致"整个对象图中的菊花链删除链",如@TechZen在其示例中所述.)
无操作
对关系目的地的对象不执行任何操作.
例如,如果您删除员工,请将其部门保留原样,即使它仍然认为该员工拥有该员工.
删除多对多关系规则的含义可以从这里推断出来.
Core Animation中的混合和屏幕外渲染都很昂贵.
可以在Instruments的Core Animation乐器中看到它们,带有调试选项:

这是我的情况:
在UIImageViews上显示50x50 PNG图像.我想用6点核心半径舍入图像.第一种方法是设置UIImageView.layer的cornerRadius和masksToBounds,这会导致屏幕外渲染.第二种方法是使PNG图像副本具有透明角落,这会导致混合(因为alpha通道).
我已经尝试了两种,但我看不出明显的性能差异.但是,我仍然想知道在理论和最佳实践方面哪个更糟糕.
非常感谢!
UIView的updateConstraints方法有一张纸条:
作为约束更新阶段的一部分,您不得使任何约束无效.作为约束更新的一部分,您也不得调用布局或绘图阶段.
我不清楚什么会使约束无效.
为了良好的封装,不错的Objective-C程序员将他们的privateivars放在extension主实现文件中声明的私有中,如下所示:
// MyClass.m
@interface MyClass () {
float value;
}
@end
@implementation MyClass
@end
Run Code Online (Sandbox Code Playgroud)
但最近,我发现了一种隐藏privateivars 的简单方法:ivars可以在一个{}块中声明@implementation,如下所示:
// MyClass.m
@implementation MyClass {
float value;
}
@end
Run Code Online (Sandbox Code Playgroud)
当没有私有方法但只private需要隐藏ivars 时,这非常方便.
但是,我不确定它的语法有效性.任何人都可以使用一些规范引用来验证或使其无效吗?
pngcrush在4.3之前的每个版本的Xcode中都有一个Apple定制版本.我在Xcode 4.3中找不到它.它仍然可以作为独立exe文件使用吗?
另一个相关问题:Command Line Tools for Xcode安装的文件在哪里?
如果用户使用输入法(例如中文拼音)在UITextView中输入,则存在拼音已经在文本视图中显示但是用户仍然没有选择最终中文字符的状态.截图将更加清晰:

我想为用户做一些文本完成,但只应该为实际输入(用户选择的中文字符)而不是中间拼音输入.所以我需要检测这个待处理状态.
我终于找到了一个奇怪的崩溃.它是由tableView:commitEditingStyle:forRowAtIndexPath:使用nilindexPath 调用引起的.但它怎么可能呢?
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
// DEBUG
if (indexPath == nil) {
NSLog(@"Deleting row at nil indexPath in %@", self);
}
[self deleteItemAtIndexPath:indexPath fromTableView:tableView];
}
}
Run Code Online (Sandbox Code Playgroud)
这是堆栈跟踪:
6 XXX -[ListViewController tableView:commitEditingStyle:forRowAtIndexPath:] (ListViewController.m:427)
7 UIKit -[UITableView(UITableViewInternal) animateDeletionOfRowWithCell:] + 85
8 UIKit -[UIApplication sendAction:to:from:forEvent:] + 73
9 UIKit -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 31
10 UIKit -[UIControl sendAction:to:forEvent:] + 45
11 UIKit -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 503
12 UIKit -[UIApplication sendAction:to:from:forEvent:] + …Run Code Online (Sandbox Code Playgroud) 我正在学习XCTest用于UI测试.我无法理解以下文件XCUIElementQuery.allElementsBoundByAccessibilityElement:
立即计算查询并返回绑定到生成的辅助功能元素的元素数组.
"与生成的辅助功能元素绑定的元素"是什么意思?另外,有什么区别allElementsBoundByIndex?
我找不到打电话selectRowAtIndexPath:animated:scrollPosition:给最初选择一行的好地方UITableView.在初始化表视图控制器时,尚未加载表数据,因此在初始化后我无法立即进行选择UITableViewController(否则会发生超限异常).
属性字符串只有一个属性 - 17点Helvetica NeueUI字体 - 覆盖整个字符串.1~3行纯英语,4~6行是英汉混合,7~8行纯粹是中文.
然后使用CTFramesetter进行布局,并使用CTFrameDraw绘制结果框架.
// UIView subclass
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
self.backgroundColor = [UIColor whiteColor];
CTFontRef font = CTFontCreateWithName(CFSTR("Helvetica NeueUI"), 17.f, NULL);
_text = [[NSAttributedString alloc] initWithString:string attributes:
[NSDictionary dictionaryWithObject:(id)font forKey:(id)kCTFontAttributeName]];
CFRelease(font);
_framesetter = CTFramesetterCreateWithAttributedString((CFAttributedStringRef)_text);
CGMutablePathRef path = CGPathCreateMutable();
CGPathAddRect(path, NULL, self.bounds);
_frame = CTFramesetterCreateFrame(_framesetter, CFRangeMake(0, 0), path, NULL);
CGPathRelease(path);
}
return self;
}
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);
// Flip the coordinate system.
CGContextTranslateCTM(context, 0.f, self.bounds.size.height);
CGContextScaleCTM(context, …Run Code Online (Sandbox Code Playgroud) ios ×6
uitableview ×2
autolayout ×1
core-data ×1
core-text ×1
macos ×1
objective-c ×1
select ×1
uikeyboard ×1
uitextview ×1
xcode ×1
xctest ×1