我很好奇今天遇到的一种情况,当我试图将一个人SKSpriteNode从一个人复制SKScene到另一个人时.在下面的游乐场的输出中,您可以看到复制后都维护linearDamping和/ angularDamping或不维护(它们似乎都回退到默认值)
// PLAYGROUND_SW1.2 - SKSpriteNode Copy
import UIKit
import SpriteKit
// ORIGINAL
let spriteNode = SKSpriteNode()
spriteNode.name = "HAPPY_NODE"
let size = CGSize(width: 55.0, height: 150.0)
let physics = SKPhysicsBody(rectangleOfSize: size)
physics.linearDamping = 0.123
physics.angularDamping = 0.456
spriteNode.physicsBody = physics
// COPY
let spriteCopy = spriteNode.copy() as! SKSpriteNode
// ORIGINAL
spriteNode.name
spriteNode.physicsBody?.linearDamping
spriteNode.physicsBody?.angularDamping
spriteNode.physicsBody?.area
// COPY
spriteCopy.name
spriteCopy.physicsBody?.linearDamping
spriteCopy.physicsBody?.angularDamping
spriteCopy.physicsBody?.area
Run Code Online (Sandbox Code Playgroud)
游乐场输出

我不确定我是否正确地复制了这两个SKSpriteNode并且SKPhysicsBody符合NSCopying如果你看看上面的输出area属性是在复制后维护的,据我所知这是基于创建size时指定的 …
如果您想在多个视图之间传递模型,可以多次使用@StateObject(请参见下面的示例)以便每个视图都可以修改该对象吗?我很欣赏使用 @EnvironmentObject 可以更好地完成此操作,但只是想了解这个新的属性包装器在这种情况下如何工作。
// MARK: - MODEL
class Model: ObservableObject {
@Published var temperature = 27.5
}
Run Code Online (Sandbox Code Playgroud)
。
// MARK: - APP.SWIFT
@main
struct SwiftUI_DataFlow_005App: App {
@ObservedObject var model = Model()
var body: some Scene {
WindowGroup {
ContentView(model: model)
}
}
}
Run Code Online (Sandbox Code Playgroud)
。
// MARK: - CONTENT VIEW
struct ContentView: View {
@StateObject var model: Model
var body: some View {
VStack {
Text("\(model.temperature)")
AnotherView(model: model)
}
}
}
// MARK: - ANOTHER VIEW
struct AnotherView: View { …Run Code Online (Sandbox Code Playgroud) 我正在玩一个基础工具测试(Objective-C),我有一些问题......
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int planetLoop;
NSString *tempString;
NSMutableArray *planetArray = [[NSMutableArray alloc] init];
NSLog(@"STRING ARRAY ... Start");
for(planetLoop=0; planetLoop<10; planetLoop++) {
tempString = [NSString stringWithFormat: @"Planet_%03d", planetLoop+1];
NSLog(@"Planet_%03d", planetLoop+1);
[planetArray addObject:tempString];
}
[planetArray release];
[pool drain];
return 0;
}
Run Code Online (Sandbox Code Playgroud)
首先,我通常在将对象添加到数组后释放它,但我是否正确地认为我当前所拥有的是正确的,因为"tempString"是一个字符串文字,因此不需要分配或释放?
其次,当我运行它(执行之前)时,我得到以下错误"无法读取未知的加载命令0x80000022"如果这是我的代码的问题?从搜索谷歌看起来它可能是xCode 3.1.2中的一个错误,任何人有任何想法?
最后我做错了什么,想法是用10个字符串"Planet_001"填充一个数组到"Planet_010"
编辑:啊,我明白了,因为"= [NSString"位即
// Autoreleased object
tempString = [NSString stringWithFormat: @"Planet_%03d", planetLoop+1];
// String literal
tempString = @"Planet_";
Run Code Online (Sandbox Code Playgroud)
非常感谢,非常感谢-gary-
我有点好奇,我有一个视图控制器类和一个NIB/XIB(都命名为"MapViewController")如果我执行以下操作,它会加载具有匹配名称的NIB.
-(id)init {
self = [super initWithNibName:@"MapViewController" bundle:nil];
if(self) {
do things ...
}
return self;
}
Run Code Online (Sandbox Code Playgroud)
另一方面,我只是指定[super init] Xcode只是寻找与控制器名称相匹配的NIB,这是如何工作的?
-(id)init {
self = [super init];
if(self) {
do things ...
}
return self;
}
Run Code Online (Sandbox Code Playgroud)
欢呼加里.
有谁知道iPhone4的各种屏幕尺寸在哪里?我已经检查了MobileHIG,但我可以找到所有可以找到旧iPhone3G的参考资料.我应该假设所有以前的值都加倍(即StatusBar = 40像素),或者是否有更准确的插图(如下面隐藏在其他地方的那个?

干杯加里
我正在缩放MKMapView以适应一组引脚的边界区域,但是当显示引脚时,我注意到变焦可以理想地做得更紧.我提出的解决方案是让区域增量略小一些:
// SMALL ZOOM
region.span.latitudeDelta = (upper.latitude - lower.latitude) * 0.9;
region.span.longitudeDelta = (upper.longitude - lower.longitude) * 0.9;
Run Code Online (Sandbox Code Playgroud)
但是我注意到精细调整似乎并没有转化为小的变焦增加,是否有某种形式的缩放对齐?真的很小的值可以工作,就像真正的大值一样,但只是将区域大小调整几个百分点似乎不适用于视图几乎总是跳跃/放大到剪切我的引脚.
快速测试显示该地区不同比例因子的结果:
// SCALE FACTOR
// V
region.span.latitudeDelta = (upper.latitude - lower.latitude) * 0.9;
region.span.longitudeDelta = (upper.longitude - lower.longitude) * 0.9;
Run Code Online (Sandbox Code Playgroud)
结果如下:
我的观点是,非常小的调整(例如0.6到0.9)似乎没有任何区别.
有谁知道为什么用于MKPinAnnotationView的图像应该略微偏移(向上和向右)我正在使用的代码是:
pinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:pinView_ID];
pinView.image = [UIImage imageNamed: @"TEST_Small.png"];
// RedCircleImage = 40px x 40px 72dpi PNG
// GreenDotImage = 2px x 2px 72dpi PNG
Run Code Online (Sandbox Code Playgroud)

代码没有变化只是改变了所用图像的文件名,一个图像是"两个红色圆圈,中间有一个黑点",另一个是"小绿点",我添加了淡蓝色Photoshop中的线条可帮助显示绿点的位置.
我检查了centerOffset属性并将其正确设置为0,0
任何想法都会受到欢迎.
我刚刚遇到了一些我以前从未见过的东西,我想我会在这里要求核实原因.我有一个UIController,他的视图是以编程方式定义的,我今天注意到当我从其loadView中注释掉代码(以测试其他东西)时,loadView和viewDidLoad都被调用了四次.我的想法是因为我没有设置视图属性iOS尝试多次加载视图,虽然我仍然有点好奇,如果这也是为什么viewDidLoad也被调用.
- (void)loadView {
NSLog(@"%s", __PRETTY_FUNCTION__);
// MAP VIEW
// MKMapView *tempMapView = [[MKMapView alloc] init];
// [tempMapView setDelegate:self];
// [self setView:tempMapView];
// [self setCustomMapView:tempMapView];
// [tempMapView release];
}
Run Code Online (Sandbox Code Playgroud)
控制台输出:
2011-02-02 14:10:00.194 Xrails[19501:307] -[MapController loadView]
2011-02-02 14:10:00.209 Xrails[19501:307] -[MapController viewDidLoad]
2011-02-02 14:10:00.212 Xrails[19501:307] -[MapController loadView]
2011-02-02 14:10:00.226 Xrails[19501:307] -[MapController viewDidLoad]
2011-02-02 14:10:00.229 Xrails[19501:307] -[MapController loadView]
2011-02-02 14:10:00.243 Xrails[19501:307] -[MapController viewDidLoad]
2011-02-02 14:10:00.246 Xrails[19501:307] -[MapController loadView]
2011-02-02 14:10:00.259 Xrails[19501:307] -[MapController viewDidLoad]
Run Code Online (Sandbox Code Playgroud) 我对以下内容感到好奇,当我编写代码时,我总是尝试通过坚持使用非自动释放的对象来管理内存.我知道这意味着对象并没有在游泳池中闲逛,但我只是好奇,如果一般这样做是好的做法还是仅仅是矫枉过正?
// User Managed Memory
NSSet *buttonSizes = [[NSSet alloc] initWithObjects:@"Go", @"Going", @"Gone", nil];
[barItemLeft setPossibleTitles:buttonSizes];
[barItemRight setPossibleTitles:buttonSizes];
[buttonSizes release];
Run Code Online (Sandbox Code Playgroud)
.
// Autoreleased Memory
NSSet *buttonSizes = [NSSet setWithObjects:@"Go", @"Going", @"Gone", nil];
[barItemLeft setPossibleTitles:buttonSizes];
[barItemRight setPossibleTitles:buttonSizes];
Run Code Online (Sandbox Code Playgroud) 快问,有没有办法指定@selector是另一个对象的方法.目前我通过使用本地方法调用远程方法来捏造一个解决方案,但它感觉很笨拙.
[NSTimer scheduledTimerWithTimeInterval:10 target:self selector:@selector(timerLocation) userInfo:nil repeats:YES]];
Run Code Online (Sandbox Code Playgroud)
.
- (void)timerLocation {
[[self dataModel] startUpdatingLocation];
}
Run Code Online (Sandbox Code Playgroud) cocoa-touch ×7
iphone ×7
objective-c ×7
copy ×1
foundation ×1
mapkit ×1
mkmapview ×1
skspritenode ×1
sprite-kit ×1
swift ×1
swiftui ×1