我在OpenGL中遇到了Z-Fighting的主要问题,我花了很长时间才找到解决这个问题的方法.我发现的一些,我理解并不喜欢:
那些我不明白的:
我已经在我的程序中实现了第二个,只需将它放入球的顶点着色器(它与地面z-fight):
float C = 1.0;
float far = 2000.0;
gl_Position = u_projView * a_position;
gl_Position.z = 2.0*log(gl_Position.w*C + 1.0)/log(far*C + 1.0) - 1.0;
gl_Position.z *= gl_Position.w;
Run Code Online (Sandbox Code Playgroud)
它工作了!
谢谢!
这篇博客文章说:
虽然有时候有一些明智的方法可以在没有DI的情况下模拟对象(通常是通过模拟类方法,如上面的OCMock示例所示),但它通常是不可能的.即使有可能,测试设置的复杂性也可能超过其好处.如果你一直使用依赖注入,你会发现使用存根编写测试并且模拟会更容易.
但它没有解释原因.id在简单的OCMockito 中,DI(注入符合协议的对象)在Objective-C中更适合模拟的可能场景是什么?
[given([mockArray objectAtIndex:0]) willReturn:@"first"];
[verifyCount(mockArray, times(1)) objectAtIndex:];
Run Code Online (Sandbox Code Playgroud)
?
我想在普通编程中做一些类似静态变量的事情,只能在使用依赖属性的 XAML 中。
这意味着我希望该物业:
我怎么做 ?
当应用程序处于后台时,我遇到了区域监控问题.如果应用程序位于前台,则区域进入和退出会被调用,但在后台时则不会被调用(有时它们会触发但非常罕见).
信标区域监控如何适用于iOS 8.1.1?当在背景中处于Beacon接近时,区域是否应立即进入/退出?
我该怎么做才能确保它有效?
做Background Modes:Location Updates或者Uses Bluetooth LE accessories必须进行背景信标监控才能工作?GeoFencing在没有这些的情况下为我工作.
我已经做了什么:
为每个地区设置这些:
beaconRegion.notifyOnExit=YES;
beaconRegion.notifyOnEntry=YES;
beaconRegion.notifyEntryStateOnDisplay = YES;
编辑:
我已经创建了一个新项目但它仍然无效.这是代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
_locationManager = [[CLLocationManager alloc] init];
_locationManager.pausesLocationUpdatesAutomatically = NO;
_locationManager.desiredAccuracy = 25;
_locationManager.delegate = self;
[_locationManager requestAlwaysAuthorization];
[_locationManager startUpdatingLocation];
CLBeaconRegion* reg =[self prepareBeacon:@"here i put my UUID" :446 :2196];
[_locationManager startMonitoringForRegion:reg];
[_locationManager startRangingBeaconsInRegion:reg];
return YES;
}
-(CLBeaconRegion*)prepareBeacon:(NSString*)uuid :(int)maj :(int)min
{
NSString* identifier = [NSString stringWithFormat:@"%@,%d,%d", uuid, maj, min];
CLBeaconRegion …Run Code Online (Sandbox Code Playgroud) 如果我希望我的代码遵循SOLID原则,特别是依赖性反转原则,这是否意味着我必须为每个模块创建一个接口(抽象),即使它只有一个实现?
在我看来,并根据这些帖子:
http://josdejong.com/blog/2015/01/06/code-reuse/
http://blog.ploeh.dk/2010/12/02/Interfacesarenotabstractions/
为每个模块创建"抽象"是代码混乱并违反了YAGNI原则.
我的经验法则是:不要使用依赖注入,或者为模块创建接口,除非它有多个实现(第二个实现可以是用于数据库/服务器/文件模块的单元测试的模拟类).
有人可以为我清楚这一点吗?SOLID是否意味着我必须注入每个模块并对其进行抽象?如果是的话,是不是只是在很多时候我们根本不会使用它?
architecture dependency-injection solid-principles dependency-inversion
iOS 文档说CBCentralManagerOptionShowPowerAlertKey默认值是NO.
实例化时我没有指定任何选项CBCentralManager
[[CBCentralManager alloc] initWithDelegate:self queue:dispatch_get_main_queue()];
Run Code Online (Sandbox Code Playgroud)
但它仍然显示“打开蓝牙以允许...”提示。
这是文档中的错误,还是我做错了什么?
编辑:
我发现了这个:
http://chris.cm/define-whether-bluetooth-is-enabled-on-ios-passively/
和这个:
iOS CoreBluetooth 被动检查蓝牙是否已启用,而不提示用户打开蓝牙
这似乎表明您必须显式设置CBCentralManagerOptionShowPowerAlertKeyto NO,这表明文档中存在错误?我只是想找人确认一下
编辑2:
CBCentralManagerOptionShowPowerAlertKey设置后0问题似乎解决了。但我仍在寻找一些解释,因为文档说的是一套,程序却是另一套,这似乎非常不合逻辑。