如何增加或减少UIWebview字体大小,而不是使用scalePageToFit:NO;
现代(64位OS X和iPhone OS)Objective C运行时的一个特性是属性能够动态合成ivars而无需在类中明确声明它们:
@interface MyClass : NSObject {
// NSString *name; unnecessary on modern runtimes
}
@property (retain) NSStrng *name;
@end
@implementation MyClass
@synthesize name;
@end
Run Code Online (Sandbox Code Playgroud)
在我的相当多的代码中,我使用自定义getter实现来初始化属性:
- (NSString *) name {
if (!name) {
name = @"Louis";
}
return name;
}
Run Code Online (Sandbox Code Playgroud)
以上与合成的ivars不兼容,因为它需要访问未在标题中声明的ivar.由于各种原因,我想更新一些我的个人框架,以便在现代运行时构建时使用合成的ivars,需要修改上述代码以使用合成的ivars来实现该目标.
虽然Objective C 2.0文档指出现代运行时的合成访问器将在首次使用时合成ivar.它没有指定使用什么低级机制来执行此操作.它是由class_getInstanceVariable()完成的,对class_addIvar()的限制是否松散,是否是一个未记录的函数在客观的C 2.0运行时?虽然我可以为支持我的属性的数据实现自己的副存储,但我更愿意使用合成访问器正在使用的机制.
我使用NSStream和SSL属性进行套接字连接.当我使用本地IP地址(如192.168.1.77)时,它工作正常.但是,如果我使用任何服务器,如www.xyz.com(它有SecurityLevelTLSv1),它会显示错误错误代码:-9843,消息:操作无法完成.(NSUnknownErrorDomain错误-9843.)
这是我的代码:
-(void) startSocket{
NSURL *website = [NSURL URLWithString:@"www.xyz.com"];
NSHost *host = [NSHost hostWithName:[website host]];
if(host) {
NSLog(@"Valid host");
[NSStream getStreamsToHost:host port:443 inputStream:&iStream outputStream:&oStream] ;
[self openStream];
}.
-(void)openStream{
NSMutableDictionary *settings = [NSMutableDictionary dictionaryWithCapacity:1];
[settings setObject:(NSString *)NSStreamSocketSecurityLevelTLSv1 forKey:(NSString *)kCFStreamSSLLevel];
[settings setObject:[NSNumber numberWithBool:YES] forKey:(NSString *)kCFStreamSSLAllowsAnyRoot];
[iStream retain];
[iStream setDelegate:self];
[iStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
CFReadStreamSetProperty((CFReadStreamRef)iStream, kCFStreamPropertySSLSettings, (CFTypeRef)settings);
//[iStream setProperty:NSStreamSocketSecurityLevelTLSv1 forKey:NSStreamSocketSecurityLevelKey];
[iStream open];
[oStream retain];
[oStream setDelegate:self];
[oStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
CFWriteStreamSetProperty((CFWriteStreamRef)oStream, kCFStreamPropertySSLSettings, (CFTypeRef)settings);
//[oStream setProperty:NSStreamSocketSecurityLevelTLSv1 forKey:NSStreamSocketSecurityLevelKey];
[oStream open];
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用NSStream和CFStream.我在两种情况下都得到同样的错误.
调用NSStreamEventOpenCompleted和NSStreamEventErrorOccurred事件.
请帮帮我. …
cocoa-touch ×2
objective-c ×2
iphone ×1
macos ×1
networking ×1
nsstream ×1
ssl ×1
uiwebview ×1