小编Kon*_*ght的帖子

在后台线程上限制CPU使用率

我有一个CPU密集型任务,我希望它使用更少的CPU并占用更多时间.

我在启动时将大量SCNNodes加载到场景中.它占用了大量内存,我希望它以安全的速度工作,而不是滞后我的系统或可能导致它崩溃.

这是我用来加载节点的代码.

dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^(void){
    NSLog(@"Start Loading Level");
    SCNNode *cameraNode = [SCNNode node];
    cameraNode.camera = [SCNCamera camera];
    cameraNode.camera.zFar = 5000;
    cameraNode.position = SCNVector3Make(0, 3000, 0);
    cameraNode.rotation = SCNVector4Make(1, 0, 0, -M_PI_2);
    [scene.rootNode addChildNode:cameraNode];
    for (int i = 0; i < 100000; i++)
    {
        int side = 3000;
        SCNNode *node = [SCNNode node];
        node.geometry = [SCNBox boxWithWidth:1 height:1 length:1 chamferRadius:0];
        node.position = SCNVector3Make(arc4random_uniform(side) - side / 2.0,
                                       0,
                                       arc4random_uniform(side) - side / 2.0);
        [scene.rootNode addChildNode:node];
    }
    dispatch_async(dispatch_get_main_queue(), ^(void){
        NSLog(@"Finished"); …
Run Code Online (Sandbox Code Playgroud)

objective-c scenekit

14
推荐指数
1
解决办法
1515
查看次数

SceneKit沿路径设置动画节点

我有一个盒子节点

_boxNode = [SCNNode node];
_boxNode.geometry = [SCNBox boxWithWidth:1 height:1 length:1 chamferRadius:0];
_boxNode.position = SCNVector3Make(0, 0, -2);
[scene.rootNode addChildNode:_boxNode];
Run Code Online (Sandbox Code Playgroud)

我有一条路

CGPathRef path = CGPathCreateWithEllipseInRect(CGRectMake(-2, -2, 4, 4), nil);
Run Code Online (Sandbox Code Playgroud)

我希望我的箱子沿着我的路径前行一次.

我如何在SceneKit中执行此操作?

我想制作一个看起来像的方法

[_boxNode runAction:[SCNAction moveAlongPath:path forDuration:duration]];
Run Code Online (Sandbox Code Playgroud)

objective-c ios scenekit swift

7
推荐指数
1
解决办法
3721
查看次数

Rails灯具:has_many和:belongs_to

如何在我的.yml中为has_many和belongs_to变量创建样本数据.

这是将这些文件添加到终端中的简单rails new lab命令的示例.我真的不知道如何用英语解释这个.但我希望我的代码能够显示足够的细节来解决问题.

man.rb

class Man < ActiveRecord::Base
  attr_accessible :name
  has_many :items
end
Run Code Online (Sandbox Code Playgroud)

item.rb的

class Item < ActiveRecord::Base
  attr_accessible :name
  belongs_to :man
end
Run Code Online (Sandbox Code Playgroud)

men.yml

one:
  name: ManOne
  #items: one, two

two:
  name: ManTwo
  #items: one, two
Run Code Online (Sandbox Code Playgroud)

items.yml

one:
  name: ItemOne

two:
  name: ItemTwo
Run Code Online (Sandbox Code Playgroud)

man_test.rb

require 'test_helper'

class ManTest < ActiveSupport::TestCase
  def test_man
    Man.all.each do |man|
      puts man.name.to_s + ": " + man.items.to_s
    end
    assert true
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails fixtures

5
推荐指数
1
解决办法
5187
查看次数

iOS App编译并运行,仅显示黑屏

以下是摘要:

  • 项目建设成功
  • 在XS Max模拟器上运行时:该应用程序显示启动屏幕,但是此后仅显示黑色,而没有运行时错误。
  • 在任何其他模拟器上运行时:该应用程序显示启动屏幕,但是,该应用程序显示黑色,但控制台读取。

libMobileGestalt MobileGestalt.c:890:此平台不支持MGIsDeviceOneOfType

我已经将应用程序从Swift 2更新到4.2。大多数错误修复只是在更新语法。

任何有助于解决此问题的见解将不胜感激!

private func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: Any]?) -> Bool {
    setConstants()

    window = UIWindow(frame: UIScreen.main.bounds)
    window!.rootViewController = RootViewController.sharedInstance
    window!.makeKeyAndVisible()

    preloadKeyboard()

    return true
}
Run Code Online (Sandbox Code Playgroud)

RootViewController的共享实例:

static let sharedInstance = RootViewController(nibName: "RootViewController", bundle: nil)
Run Code Online (Sandbox Code Playgroud)

为什么这不是重复的问题:

  • MGc90不是我要解决的主要错误(黑屏是)
  • 链接问题的解决方案无法解决问题
  • Sol#1 Xcode 9.4.1产生相同的错误
  • Sol#2从didFinishLaunchingWithOptions中删除private只会产生一个错误
  • Sol#3很好地了解了该错误的含义,并帮助我理解了为什么它在XS Max上未显示错误。
  • Sol#4我没有断点或警报以继续
  • Sol#5我没有模棱两可的布局警告
  • Sol#6部署目标很好
  • Sol#7我知道较新的iPhone型号不会产生错误,但仍显示黑屏
  • Sol#8字体已加载
  • Sol#9另一个变更模拟器。

xcode ios ios-simulator swift

5
推荐指数
0
解决办法
950
查看次数

无法将类型'Promise &lt;[NSDictionary]&gt;'的值转换为预期的参数类型'Guarantee &lt;Void&gt;'

目前,当我将我的PromiseKit从Swift 2更新到Swift 4时遇到了问题。我的许多Promise都将这个问题从NSDictionary退还给Guarantee Void。我不明白为什么会出现这个问题。如果有人可以向我解释,将不胜感激!

func getPlayerGameLog(sportName: String) -> Promise<NSArray> {
    let team = (self as? PlayerWithPositionAndGame)?.team
    let position = (self as? PlayerWithPositionAndGame)?.position

    if sportName == "mlb" {
        return when(Data.mlbPlayerGameLogs[id].get(), Data.sportsTeams[sportName].get()).then { (result, teams) -> NSArray in
            if result.count == 0 {
                return []
            } else {
                // Omitted Code
                return gameStats
            }
        }
    } else if sportName == "nfl" {
        return when(Data.nflPlayerGameLogs[id].get(), Data.sportsTeams[sportName].get()).then { (result, teams) -> NSArray in
            if result.count == 0 {
                return []
            } else {
                // …
Run Code Online (Sandbox Code Playgroud)

swift promisekit swift4

0
推荐指数
1
解决办法
675
查看次数