我想实现类似"registerClassForAction"的东西.为此,我定义了一个协议:
@objc protocol TestProt {
func testMe() -> String
}
Run Code Online (Sandbox Code Playgroud)
我们来做一个班级宣言:
class TestClass: NSObject, TestProt {
func testMe() -> String {
return "test"
}
}
Run Code Online (Sandbox Code Playgroud)
我定义了在另一个类中注册对象的函数:
func registerClassForAction(aClass: AnyClass) { ... }
Run Code Online (Sandbox Code Playgroud)
切换到REPL,我将模拟寄存器方法:
let aClass: AnyClass = TestClass.classForCoder() //or .self
let tClass = aClass as NSObject.Type
let tInst = tClass() as TestProt
tInst.testMe()
Run Code Online (Sandbox Code Playgroud)
这当前有效,但有另一种实例化tClass的方法,除了
let tClass = aClass as NSObject.Type
Run Code Online (Sandbox Code Playgroud)
问的原因,我想探索摆脱NSObject的机会所以我的TestClass不会继承NSObject.考虑了委托,但我想控制tInst的生命周期,并能够在特定时间点解除它.
谢谢你的帮助
罗恩
我正在实现一个UISearchDisplayController,我想searchResultsTableView在加载文本之前填充tableView(未过滤)的内容 - 在输入文本之前.
这在我开始在searchBar中输入值时有效.
- (void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller {
self.isSearching = YES;
//tell the searchDisplayTableView to show here!
[controller.searchBar setShowsCancelButton:YES animated:YES];
}
- (void)searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller {
self.isSearching = NO;
[controller.searchBar setShowsCancelButton:NO animated:YES];
}
Run Code Online (Sandbox Code Playgroud)
有人会指出正确的方向吗?
请不要回答"不要那样做"或"Apple没有设计控制方式".要么 ...
各位开发者,我正在尝试在mapview上实现多边形叠加,如下所示:
private func drawOverlayForObject(object: MyStruct) {
if let coordinates: [CLLocationCoordinate2D] = object.geometry?.coordinates {
let polygon = MKPolygon(coordinates: coordinates, count: coordinates.count)
self.mapView.addOverlay(polygon)
}
}
Run Code Online (Sandbox Code Playgroud)
出现以下错误:
在调用中缺少参数'interiorPolygons'的参数
根据文件: Apple Docu:
可变指针
当函数声明为接受UnsafeMutablePointer参数时,它可以接受以下任何一项:
- nil,作为空指针传递
- UnsafeMutablePointer值
- 一个输入输出表达式,其操作数是类型为Type的存储左值,它作为左值的地址传递
- 输入输出[类型]值,作为指向数组开头的指针传递,并在调用期间延长寿命
现在我认为我的方法是正确的,提供[CLLocationCoordinate2D]数组.有没有人遇到同样的问题,并找到了解决方法?
谢谢罗尼
我正在尝试在iOS应用中测试admob集成.我手动添加了框架:
我也禁用了位代码,因为Google的框架是在没有的情况下构建的.到现在为止还挺好.
出现以下错误:
/ usr/bin/codesign --force --sign [...]/internal/googleads-mobile-ios-examples/Swift/admob/BannerExample/build/Release-iphoneos/BannerExample.app/Frameworks/GoogleMobileAds.framework:
>捆绑包格式无法识别,无效或不适合命令
/ usr/bin/codesign失败,退出代码为1
在下面的代码中,我是否正确理解了保留周期问题并且是否会有保留周期?
- (NSError *)importRoute:(NSDictionary *)route {
[self.importContext performBlockAndWait:^{
[NSEntityDescription insertNewObjectForEntityForName:@"Entity" inManagedObjectContext:self.importContext];
//do I get a retain cycle here?
}];
...
}
- (NSManagedObjectContext *)importContext {
if (!_importContext) {
id appDelegate = [[UIApplication sharedApplication] delegate];
_importContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
_importContext.parentContext = [appDelegate managedObjectContext];
}
return _importContext;
}
Run Code Online (Sandbox Code Playgroud) memory-management objective-c automatic-ref-counting retain-cycle
我试图在PHP和openssl中使用base64编码一个字符串.
openssl:echo -n"1234567890A"| openssl enc -base64
PHP:
$hash = sha1("1234567890A", true);
var_dump($hash);
echo base64_encode($hash);
Run Code Online (Sandbox Code Playgroud)
结果不同:
openssl:MTIzNDU2Nzg5MEE =
PHP:/ Q6nenquhGpX5h2WdiQZQF47Pe8 =
我想这只是一个简单的设置我可以用来调整结果1或2,因为PHP会生成一个字符串1的双精度字符串.
请帮帮我.非常感谢,罗恩
swift ×2
admob ×1
base64 ×1
code-signing ×1
ios ×1
ios7 ×1
ios8 ×1
mkpolygon ×1
objective-c ×1
openssl ×1
php ×1
protocols ×1
retain-cycle ×1
xcode7 ×1